采用 Ajax 的方式,可以创建令人印象深刻、高度响应的网页。然而,编写客户端代码非常耗时。VS 不能为之提供丰富的设计体验,也没有调试工具追踪那些松散的 js 语言中不可避免的错误;甚至你成功完成了工作,还要在各种浏览器上进行测试,除非你非常熟悉各种浏览器对 js 支持的微小差别。

       由于这些原因,许多开发人员不手工编写客户端脚本,甚至在设计 Ajax 风格的页面时也是如此。相反,他们更乐意使用能够生成他们需要的脚本的高级组件。

       一个例子是免费的第三方 Ajax.NET 库(可从 http://ajax.schwarz-interactive.de/csharpsample 获得)。Ajax.NET 使用特性标记方法,然后这些方法就可以通过客户端回调和自定义 HTTP 处理程序远程调用。

       另一个例子是 ASP.NET AJAX,它是更加全面的 Ajax 工具集,以后会介绍。

       虽然两者都是很好的选择,你还能够执行最核心的 Ajax 任务(发送异步请求到服务器),使用 ASP.NET 中更加直观的客户端回调功能。客户端回调让你能刷新页面的部分数据而不需要触发完整的回传。最妙的是,你不需要使用 XMLHttpRequest 对象的脚本代码,不过,仍然需要编写处理服务器端响应的客户端脚本

 

创建客户端回调

       要在 ASP.NET 里创建客户端回调,首先要计划如何让通信正常工作。这里是最基本的模型:

  1. 在某一时刻,js 事件发生,触发服务器回调。
  2. 此时,正常的页面生命周期开始,所有正常的服务器端事件发生。
  3. 这个过程完成时,且页面正确初始化后,ASP.NET 执行服务器端回调方法。此方法具有固定的签名:接收并返回一个字符串
  4. 页面从服务器端方法接收到响应后,使用 js 代码相应的修改网页。

       ASP.NET 架构用于抽象出通信过程,这样你可以构建使用回调的页面而不用考虑底层逻辑,就像你从视图状态以及页面生命周期得到的便利一样。

 

       这个例子,你将会看到有两个下拉列表的页面。第一个填充来自 Northwind 数据库的一系列区域,它在页面第一次加载时完成。第二个列表开始为空,直到用户在第一个列表中作出选择,此时第二个列表的内容通过回调获得并被插入到列表里。

1. 构建基本页面

       填充第一个列表很容易,声明性的绑定到数据源控件:

JavaScript And Ajax(在客户端回调中使用 Ajax)

>
    Choose a Region, and then a Territory:<br />
    <br />
    <asp:DropDownList ID="lstRegions" runat="server" Width="210px" DataSourceID="sourceRegions"
        DataTextField="RegionDescription" DataValueField="RegionID">
    </asp:DropDownList>
    <asp:DropDownList ID="lstTerritories" runat="server" Width="275px">
    </asp:DropDownList>
    <br />
    <br />
    <br />
    <asp:Button ID="cmdOK" runat="server" Text="OK" Width="50px" OnClick="cmdOK_Click" />
    <br />
    <br />
    <asp:Label ID="lblInfo" runat="server"></asp:Label>
    <asp:SqlDataSource ID="sourceRegions" runat="server" ConnectionString="<%$ ConnectionStrings:Northwind %>"
        SelectCommand="SELECT 0 As RegionID, '' AS RegionDescription UNION SELECT RegionID, RegionDescription FROM Region">
    </asp:SqlDataSource>
</div>

相关文章: