Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)归海一刀published in(发表于) 2014/1/30 1:11:05 新瓶旧酒ASP.NET,AJAX(6),-,客户端脚本编程(Sys.WebForms命名空间下的类)_[Asp.Net教程]
新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程(Sys.WebForms命名空间下的类Sys.Serialization命名空间下的类) 介绍Sys.WebForms命名空间下的类都是与局部刷新相关的类。PageRequestManager类,其中有5个事件:initializeRequest事件、beginRequest事件、endRequest事件、pageLoading事件和pageLoaded事件。与这5个事件相关的还有5个事件参数类:InitializeRequestEventArgs类、BeginRequestEventArgs类、EndRequestEventArgs类、PageLoadingEventArgs类和PageLoadedEventArgs类。Sys.Serialization命名空间下只有一个类:Sys.Serialization.JavaScriptSerializer类。它用于在ECMAScript(JavaScript)对象与JSON格式数据之间进行转换。
1、PageRequestManager Class ·initializeRequest Event - 异步回发的初始化时触发 ·beginRequest Event - 异步回发开始前触发 ·endRequest Event - 异步回发完成后触发 ·pageLoading Event - 异步回发完成后页面加载开始前触发 ·pageLoaded Event - 异步回发完成后页面加载完成后触发 ·Sys.WebForms.PageRequestManager.getInstance(); - 返回页面的PageRequestManager类的实例 ·Sys.WebForms.PageRequestManager.getInstance().abortPostBack(); - 终止所有异步回发 ·isInAsyncPostBack属性 - 是否正在异步回发过程中
2、InitializeRequestEventArgs Class ·postBackElement属性 - 产生回发事件的元素 ·InitializeRequestEventArgs继承自Sys.CancelEventArgs,所以具有cancel属性 - 是否取消回发
3、BeginRequestEventArgs Class ·postBackElement属性 - 产生回发事件的元素
4、EndRequestEventArgs Class ·error属性 - Error对象 ·errorHandled属性 - 异常是否已经被处理 ·response属性 - Sys.Net.WebRequestExecutor对象 ·dataItems属性 - 服务端注册的DataItem
5、PageLoadingEventArgs Class ·panelsUpdating属性 - 准备更新的UpdatePanel数组(div元素) ·dataItems属性 - 服务端注册的DataItem
6、PageRequestManager Class ·panelsUpdated属性 - 更新完毕的UpdatePanel数组(div元素) ·dataItems属性 - 服务端注册的DataItem
7、Sys.Serialization.JavaScriptSerializer Class ·serialize方法 - 序列化(参数:ECMAScript(JavaScript)对象;返回值:JSON字符串) ·deserialize方法 - 反序列化(参数:JSON字符串;返回值ECMAScript(JavaScript)对象:)
8、其它请查看官方文档
示例InitializeRequest.aspx<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="InitializeRequest.aspx.cs" Inherits="ClientScripting_SysWebForms_InitializeRequest" Title="InitializeRequest" %>
Loading <%= DateTime.Now %> onClick="Button1_Click" /> onClick="Button1_Click" />
运行结果1、单击“Button”按钮ctl00_ContentPlaceHolder1_Button1false
2、在Loading的过程中再次单击“Button”按钮ctl00_ContentPlaceHolder1_Button1true
3、单击“cancel属性测试”按钮没有反应
BeginRequestAndEndRequest.aspx注:在ScriptManager的OnAsyncPostBackError事件中输入代码:ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message + "(母版页的ScriptManager格式化错误信息)";<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="BeginRequestAndEndRequest.aspx.cs" Inherits="ClientScripting_SysWebForms_BeginRequestAndEndRequest" Title="BeginRequest和EndRequest" %>
<%= DateTime.Now.ToString() %> onClick="Button1_Click" /> onClick="Button2_Click" />
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequestHandler); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler2);
function beginRequestHandler(sender, e) { // postBackElement - 产生回发事件的元素 alert(e.get_postBackElement().id); } function endRequestHandler(sender, e) { // response - Sys.Net.WebRequestExecutor对象 Sys.Debug.trace("状态代码:" + e.get_response().get_statusCode()); if (e.get_error()) { // errorHandled - 异常是否已经被处理 e.set_errorHandled(true); // error - Error对象 Sys.Debug.trace("出错了!错误信息:" + e.get_error().message); } } function endRequestHandler2(sender, e) { var upId = "<%= this.UpdatePanel1.ClientID %>"; // dataItems - 服务端注册的DataItem if (typeof(e.get_dataItems()[upId]) != 'undefined') { Sys.Debug.trace("注册的数据项为:" + e.get_dataItems()[upId]); } }
运行结果1、单击“触发异常”按钮弹出框,信息:ct100_ContentPlaceHolder1_Button1状态代码:200出错了!错误信息:输入字符串的格式不正确。(母版页的ScriptManager格式化错误信息)
2、单击“RegisterDataItem测试”按钮弹出框,信息:ct100_ContentPlaceHolder1_Button2状态代码:200注册的数据项为:webabcd
Sample.aspx<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Sample.aspx.cs" Inherits="ClientScripting_SysSerialization_Sample" Title="Sys.Serialization Sample" %>
<%= DateTime.Now.ToString()%> onClick="Button1_Click" />
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequestHandler); function endRequestHandler(sender, e) { var upId = "<%= this.UpdatePanel1.ClientID %>"; // 获得服务端注册的DataItem,它是一个JSON字符串 var jsonStringServer = e.get_dataItems()[upId]; // 反序列化这个JSON字符串,使其成为一个JSON对象 var jsonObject = Sys.Serialization.JavaScriptSerializer.deserialize(jsonStringServer)
// 序列化这个JOSN对象,使其成为一个JSON字符串 var jsonStringClient = Sys.Serialization.JavaScriptSerializer.serialize(jsonObject); Sys.Debug.trace(jsonStringClient); Sys.Debug.trace(jsonObject.Name + " " + jsonObject.Age); Sys.Debug.trace(Sys.Serialization.JavaScriptSerializer.serialize(jsonObject)); }
运行结果单击“Sys.Serialization”按钮{"Name":"webabcd","Age":27}webabcd 27{"Name":"webabcd","Age":27}作者:webabcd[源码下载]
赞