探讨ASP.NET MVC框架内置AJAX支持编程技术

传统型ASP.NET Web Forms是基于同时包含了表现层和后台代码的Web页面, 所以,紧随其后出现的ASP.NET AJAX,特别是这个框架的服务器端控件并没有像 它们本应该的那样光芒四射。于是,很多跟随AJAX时髦的ASP.NET开发者只是向 ASP.NET页面中随意地放置一些UpdatePanel控件以便使其程序实现基本的AJAX支 持。实际上,这只是防止了页面的“闪烁”,而根本上页面还是进行 了完整的回发,并且要经历整个页面的生存周期。为了消除ASP.NET Web Forms 所依赖的页面回寄和ViewState等复杂技术,微软又推出了ASP.NET应用开发的另 一个可选框架—ASP.NET MVC。也正是基于前面的分析,ASP.NET MVC中也 加入了部分AJAX支持技术。但是,目前的ASP.NET MVC框架尚未发布其正式发行 版本,在许多方面仍存在不完善的地方,尤其是对于AJAX技术仅提供了有限的支 持。本文中,我们将通过一个简单的例子来讨论如何借助于ASP.NET MVC Preview 4框架提供的Ajax.Form方法实现基本的AJAX编程支持。

一、引 言

如果你详细研究一下ASP.NET MVC框架每个版本之间的变化信息有关资 源,那么你会注意到新版本的框架中提供了一组新对象,例如AjaxHelper和 AjaxExtensions。借助于这些对象,你可以为你的ASP.NET MVC应用程序添加流 行的Ajax支持功能。此外,借助于客户端JavaScript脚本框架JQuery你也能实现 同样的目的,而且借助于开源工程 MVCContrib似乎你也能够实现同样的Ajax支 持。

本文中,我们针对ASP.NET MVC Preview 4框架提供的Ajax作一简单 的讨论,分析其提供的基本的Ajax支持功能。

二、实例剖析

(一 )创建示例ASP.NET MVC工程

启动Visual Studio 2008(我使用的是Team System版本)创建一个新的ASP.NET MVC工程,并命名为MvcBuiltinAjax(注: 本实例中使用的是目前最新的ASP.NET MVC Preview 4;而且在本例中我们并不 关心是否加入单元测试支持框架的问题)。

(二)修改视图页面 Index.aspx

请注意,本例中我们直接修改视图页面Index.aspx。我们将 在此页面中添加一个文本框和一个按钮控件。我们的目的是,当点击此按钮控件 时,执行表单提交功能。通过此过程,我们将回调服务器端并取得相应的字符串 ,而且此字符内容将被以Ajax方式填入到按钮控件旁边的div元素中。图1展示了 实例程序的某一运行时刻的快照。图中,当我们在文本框中输入字符串“ 张三”时,后台控制器Action方法查询已有数据串,如果其中没有刚刚输 入的内容,则显示“ 可以使用这个名字!”;否则,显示 “ 此名字已经被使用了!”的提示。

现在,我们来看一下修改视图 Index.aspx中涉及的主要内容,如下所示:

<asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server" >
  <p>
    <%using (Ajax.Form ("ExamineTextBox", new AjaxOptions {UpdateTargetId = "resultDiv" }))
    { %>
      <%= Html.TextBox("textBox1")%>
      <input type="submit" value="Button"/>
       <span id="resultDiv"/>
   <% } %>
  </p>
</asp:Content>

请注意这里所使用的Ajax.Form帮助函数和 引用span元素的UpdateTargetID属性的值。有关AjaxOptions的用法也有许多值 得考察的地方,后面再进行讨论。

如果你进一步分析一下运行时刻上面 视图页面的相应源码,那么,你会注意到对应于上面内容的如下一段内容:

<p>
    <form action="/Home/ExamineTextBox" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, { insertionMode: 0, updateTargetId: 'result' }); return false;"><input type="text" name="textBox1" id="textBox1" value="" />
       < input type="submit" value="提交"/>
        <span id="result"/>
   </form>
   < /p>

正如你所想像的,在前面的编码中,我们也完全可以直接使用这 里的Sys.Mvc.AsyncForm.handleSubmit函数,只是上面的形式更为直观且易于使 用罢了。

时间: 2024-11-01 22:10:14

探讨ASP.NET MVC框架内置AJAX支持编程技术的相关文章

为ASP.NET MVC框架添加AJAX支持

一.引言 本文中,我们将向你展示如何在基于ASP.NET MVC框架构建 的ASP.NET应用程序中添加一些基本的Ajax特征(例如局部更新及行为组件等概念 ). [说明]本文向你提供了有关于ASP.NET MVC框架的完整应用源码及 测试示例.在本文方案中,共有两个工程:一个是TaskList(Web应用程序), 另一个是AjaxMVC(一个提供了扩展的Ajax支持的类库).请注意,类库AjaxMVC 中提供的函数实现了一些基本的Ajax功能,例如不依赖于页面回寄的局部更新以 及关联到DOM元

[转自Scott]ASP.NET MVC框架(第四部分): 处理表单编辑和提交场景

英文原文地址:http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx 翻译原文地址:http://blog.joycode.com/scottgu/archive/2007/12/10/112465.aspx 过去的几个星期内,我一直在写着讨论我们正在开发的新ASP.NET MVC框架的系列贴子.ASP.NET

[转自Scott]ASP.NET MVC框架(第一部分)

英文原文地址:http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx 翻译原文地址:http://blog.joycode.com/scottgu/archive/2007/11/14/111385.aspx 两个星期前, 我在博客里讨论了ASP.NET的一个新MVC(模型.视图,控制器)框架,我们将在不久的将来作为一个可选功能来支持.该框架提供了一个结构化的模型,来加强应用中的清晰关

BrnShop开源网上商城第二讲:ASP.NET MVC框架

原文:BrnShop开源网上商城第二讲:ASP.NET MVC框架 在团队设计BrnShop的web项目之初,我们碰到了两个问题,第一个是数据的复用和传递,第二个是大mvc框架和小mvc框架的选择.下面我依次来说明下.       首先是数据的复用和传递:对于BrnShop的每一次请求,程序都要分成好几个阶段执行,例如验证,执行动作方法等等,在各个阶段我们可能需要重复使用同一信息,而我们的愿景就是希望此信息只需获取一次,然后沿着流程管道一直流动,这样在后面的阶段中就可以直接使用,不用再重新获取了

ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景

这个系列的第一篇建造了一个简单的电子商务产品列表/浏览网站.它讨论了MVC后面的高层次的概念,示范了如何从头创建一个新的 ASP.NET MVC项目,实现和测试这个电子商务产品列表功能.系列的第二篇对ASP.NET MVC框架的URL路径选择(routing)架构做了深入探讨, 讨论了它的工作原理以及你如何使用它来处理更高级的URL路径选择场景. 第三篇讨论了控制器是如何与视图做交互的,特别地讨论了你可以 把视图数据从控制器传给视图以显示返回到客户端的回复的各种方法. 在今天的帖子里,我将讨论你

ASP.NET MVC框架 (第二部分): URL路径选择

第一部分的扼要简述 在这个系列的第一部分里,我们创建了一个电子商务网站,呈示了三类URL: URL格式 行为 URL例子 /Products/Categories 浏览所有的产品分类 /Products/Categories /Products/List/Category 列出一个分类中的产品 /Products/List/Beverages /Products/Detail/ProductID 显示一个特定产品的细节 /Products/Detail/34 我们通过创建象下面这样一个Produ

ASP.NET MVC框架(第一部分)

一个简单的电子商务店面应用 我将使用一个简单的电子商务商店应用来示范ASP.NET MVC框架的工作原理.在今天的贴子里,我将实现一个产品列单,以及相关的浏览应 用场景. 具体来说,我们将建造一个网上商店,允许用户在访问该网站上的/Products/Categories网址时 浏览产品分类列表: 当用户点击上面网页上的产品分类链接时,他们将转到一个产品分类列表URL /Products/List/CategoryName上,该页面列出了指定分类中 的还在销售的产品: 当用户点击个别的产品时,他们

MIX 2008与ASP.NET MVC框架的Road-Map

ScottGu同学最近在Blog上发布了一些有关MIX 2008和ASP.NET MVC框架的消息 . 话说2007的视频我还没有看多少,2008又要出来了.在每年的MIX大会上总有 一些东西被微软力推,比如06年的ASP.NET AJAX(当时还是Atlas,如果没有记错 的话),07年的Silverlight,那么在08年的MIX大会中又会重视什么呢?Scott在 这篇文章中给了我们一些选项: IE 8 IIS 7.0 ASP.NET (including ASP.NET 3.5, ASP.

[转自scott]ASP.NET MVC框架 (第二部分): URL路径选择

英文原文地址:http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx 翻译原文地址:http://blog.joycode.com/scottgu/archive/2007/12/04/112249.aspx 上个月,我发表了我要撰写的系列贴子中的第一篇,这些帖子将讨论我们正在开发的新ASP.NET MVC框架.这个系列的第一个贴子建造了一个简单的电子商务产品列