ASP.NET AJAX(6) - 客户端脚本编程(Sys.WebForms命名空间下的类Sys.Serialization命名空间下的类)
来源:互联网 发布:怎样注册域名 编辑:程序博客网 时间:2024/04/30 14:26
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(JavaS
·deserialize方法 - 反序列化(参数:JSON字符串;返回值ECMAScript(JavaS
示例
InitializeRequest.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="InitializeRequest.aspx.cs"
Inherits="ClientScripting_SysWebForms_InitializeRequest" Title="InitializeRequest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<script runat="Server">
protected void Button1_Click(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(3000);
}
</script>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="0" DynamicLayout="false">
<ProgressTemplate>
Loading
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%= DateTime.Now %>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" On
<asp:Button ID="Button2" runat="server" Text="cancel属性测试" On
</ContentTemplate>
</asp:UpdatePanel>
<p>
<textarea id="TraceConsole" style="width: 500px; height: 300px;"></textarea>
</p>
<script type="text/javas
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);
function initializeRequestHandler(sender, e)
{
// postBackElement - 产生回发事件的元素
if (e.get_postBackElement().id == "<%= Button2.ClientID %>")
{
// InitializeRequestEventArgs继承自Sys.CancelEventArgs
// 取消回发
e.set_cancel(true);
}
else
{
// 获得页面的PageRequestManager类的实例
var prm = Sys.WebForms.PageRequestManager.getInstance();
Sys.Debug.trace(e.get_postBackElement().id);
// Sys.WebForms.PageRequestManager的isInAsyncPostBack属性 - 是否正在异步回发过程中
Sys.Debug.trace(prm.get_isInAsyncPostBack());
}
}
</script>
</asp:Content>
运行结果
1、单击“Button”按钮
ctl00_ContentPlaceHolder1_Button1
false
2、在Loading的过程中再次单击“Button”按钮
ctl00_ContentPlaceHolder1_Button1
true
3、单击“cancel属性测试”按钮
没有反应
BeginRequestAndEndRequest.aspx
注:在ScriptManager的On
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="BeginRequestAndEndRequest.aspx.cs"
Inherits="ClientScripting_SysWebForms_BeginRequestAndEndRequest" Title="BeginRequest和EndRequest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<script runat="Server">
protected void Button1_Click(object sender, EventArgs e)
{
int i = Int32.Parse("abc");
}
protected void Button2_Click(object sender, EventArgs e)
{
ScriptManager.GetCurrent(this).RegisterDataItem(this.UpdatePanel1, "webabcd");
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
<ContentTemplate>
<%= DateTime.Now.ToString() %>
<br />
<asp:Button ID="Button1" runat="server" Text="触发异常" On
<asp:Button ID="Button2" runat="server" Text="RegisterDataItem测试" On
</ContentTemplate>
</asp:UpdatePanel>
<p>
<textarea id="TraceConsole" style="width: 500px; height: 100px;"></textarea>
</p>
<script language="javas
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]);
}
}
</script>
</asp:Content>
运行结果
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" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<script runat="Server">
protected void Button1_Click(object sender, EventArgs e)
{
// 创建一个Person对象
Person person = new Person();
person.Name = "webabcd";
person.Age = 27;
// 序列化上面创建的Person对象,使其成为一个JSON字符串
System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
string s = jss.Serialize(person);
// 注册DataItem
ScriptManager.GetCurrent(this).RegisterDataItem(this.UpdatePanel1, s);
}
/// <summary>
/// Person类
/// </summary>
public class Person
{
private string _name;
/// <summary>
/// 姓名
/// </summary>
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _age;
/// <summary>
/// 年龄
/// </summary>
public int Age
{
get { return _age; }
set { _age = value; }
}
}
</script>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="Server">
<ContentTemplate>
<%= DateTime.Now.ToString()%>
<br />
<asp:Button ID="Button1" runat="server" Text="Sys.Serialization" On
</ContentTemplate>
</asp:UpdatePanel>
<p>
<textarea id="TraceConsole" style="width: 500px; height: 100px;"></textarea>
</p>
<script language="javas
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));
}
</script>
</asp:Content>
运行结果
单击“Sys.Serialization”按钮
{"Name":"webabcd","Age":27}
webabcd 27
{"Name":"webabcd","Age":27}
OK
- 新瓶旧酒ASP.NET AJAX(6) - 客户端脚本编程(Sys.WebForms命名空间下的类Sys.Serialization命名空间下的类)
- ASP.NET AJAX(6) - 客户端脚本编程(Sys.WebForms命名空间下的类Sys.Serialization命名空间下的类)
- 新瓶旧酒ASP.NET AJAX(10) - 客户端脚本编程(Sys.Services命名空间下的类)
- 新瓶旧酒ASP.NET AJAX(7) - 客户端脚本编程(Sys命名空间下的类)
- 新瓶旧酒ASP.NET AJAX(5) - 客户端脚本编程(Sys.UI命名空间下的类和快捷方法)
- 新瓶旧酒ASP.NET AJAX(5) - 客户端脚本编程(Sys.UI命名空间下的类和快捷方法)
- 新瓶旧酒ASP.NET AJAX(8) - 客户端脚本编程(Sys.Net命名空间下的WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor)
- 系统地学习ASP.NET AJAX(8) - 客户端脚本编程(Sys.Net命名空间下的WebRequestManager、WebRequest、WebRequestExecutor和XMLHttpExecutor)
- 新瓶旧酒ASP.NET AJAX(9) - 客户端脚本编程(Sys.Net命名空间下的WebServiceProxy、WebServiceError、Generated Proxy Classes以及调用WebService、PageMethod)
- 新瓶旧酒ASP.NET AJAX(2) - 客户端脚本编程(命名空间、类、成员、接口、继承、枚举)
- ASP.NET的命名空间
- .Net框架下的命名准则--命名空间的名称
- Ajax学习笔记(4)Sys.WebForms与服务端协同工作以及Sys.Application下的属性
- ASP.NET AJAX 说明文档->客户端引用->全局命名空间
- .NET的命名空间
- /sys/bus/usb/devices下的文件命名
- C#中System命名空间下的Console类
- C#之System命名空间下的Console类
- 2009年10月14日
- Android中图片占用内存的计算
- ASP.NET AJAX客户端编程之旅(四)——以组件的思想开发Ajax应用:客户端组件初探 收藏 在这里添加日志标题
- 工厂三兄弟之工厂方法模式(四)
- ASP.NET AJAX客户端编程之旅(五)——以组件的思想开发Ajax应用:行为、绑定及xml-script
- ASP.NET AJAX(6) - 客户端脚本编程(Sys.WebForms命名空间下的类Sys.Serialization命名空间下的类)
- 系统基础快捷键
- ASP.NET AJAX客户端编程之旅(七)——剩下的问题(完结篇)(1)
- ASP.NET AJAX异步调用Web Service和页面中的类方法(1)
- 配置ASP.NET AJAX
- ASP.NET 2.0 Ajax程序:保持用户上下文
- ASP.NET 2.0 Ajax程序:保持用户上下文
- ASP.NET 2.0 Ajax程序:保持用户上下文
- SQL Server数据导入导出工具BCP详解