技术开发 频道

Ajax:用异步回调对ASP.NET 开发重构实例

【IT168技术文档】 onclick事件写在了HTML中,现在从中移出至外部的JS。

<label>用户名</label>

 <span>username value</span>

 <a href="#" id="divElem">查看</a>

 在JavaScript代码中给ajaxread方法加入了onclick事件处理:

 var divElem = document.getElementById('divElem');

 var span = document.getElementsByTagName('span');

 divElem.onclick = function()

 {

 span[0].innerHTML = result;

 return false;

 }

 其中 result 是这个方法的传值参数。

 另外,还定义了一个处理回调时出错的方法:

 function CallbackError(result)

 {

 alert(result);

 }

 下面是服务端程序的示例部分:

 public partial class _Default : Page, ICallbackEventHandler

 {

 public void RaiseCallbackEvent(string result)

 {

 }

 public string GetCallbackResult()

 {

 string username = usernameValue;

 return username;

 }

 protected void Page_Load(object sender, EventArgs e)

 {

 string callback = Page.ClientScript.GetCallbackEventReference(this, null, "ajaxread", null, "CallbackError", true);

 Page.ClientScript.RegisterStartupScript(this.GetType(), "_Default", callback, true);

 }

 }

 其中 usernameValue 是数据处理的变量,具体实现代码略。

 程序编译后,运行结果与之前用异步回传是一致的,但代码重构改为异步回调后,无论是程序可读性,还是代码精简度,都提升了不少。

 我通过Firebug观察到客户端代码中的数据交互处理是文本(Text)而不是XML,这是 ASP.NET 默认的异步回调数据处理的方式吧。

 在ASP.NET 服务端控件中就带有Ajax特性的功能了,如 GridView 内带了利用异步回调技术的分页功能,这样可以少写了一些代码量。

 在 GridView 的属性中设置:AllowPaging="true" EnableSortingAndPagingCallbacks="true"。数据绑定在 Page_Load事件和GridView控件的OnPageIndexChanging事件中调用。这样的分页是Ajax的异步回调的了。

0