Asp.net Ajax 1.0 异步回调时,服务器端Render原…

2008-02-22 09:43:20来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


{
foreach (UpdatePanel panel in _updatePanelsToRefresh)
{
if (panel.Visible)
{
panel.RenderControl(_updatePanelWriter);
// 会生成如何的客户端回调信息
//169|updatePanel|UpdatePanel1|\r\n
}
}

}
...
//依次将页面上所有控件的RenderControl,写入dummyWriter
foreach (Control control in containerControl.Controls)
{
control.RenderControl(dummyWriter);
//生成一部分信息
<input type=\"submit\" name=\"Button1\" value=\"Button\" id=\"Button1\" />\r\n
<input name=\"txt\" type=\"text\" value=\"wxy\" id=\"txt\" />\r\n
}

注意,在RenderFormCallback时,HttpRequest会手动的Flush()将上面的信息刷加IIS
}

至于Ctronl.Render时,是如何写入HtmlTextWriter,再写入HttpWriter,
再写回HttpWorkRequest,最终刷回内核,或使用socket发送回服务器,不在本文讨论范围.......


由上可见,Asp.net Ajax,必没有使用传统的HttpRequest.Filter来处理回发信息,而是使用了Asp.net 2.0内置的方式和回调的


Asp.net Ajax回调后呈现到客户端有二个部分,一部分是由RenderFormCallback生成的如下

RenderFormCallback部分会生成如下的客户端脚本
169|updatePanel|UpdatePanel1|\r\n

<input type=\"submit\" name=\"Button1\" value=\"Button\" id=\"Button1\" />\r\n
<input name=\"txt\" type=\"text\" value=\"wxy\" id=\"txt\" />\r\n

一部分是RenderPageCallback生成的

52|hiddenField
|__VIEWSTATE|/wEPDwUJNjg1NjA3NDcxZGRCX32AH2I/NEq gCFrVr49kQDECw==|56
|hiddenField|__EVENTVALIDATION|/wEWAwKf344xAoznisYGApKGsMIJOfjKisKPYP0O2NXUpNjnA29hMlA=|0
|asyncPostBackControlIDs|||0|postBackControlIDs|||13|updatePanelIDs||tUpdatePanel1|0
|childUpdatePanelIDs|||12|panelsToRefreshIDs||UpdatePanel1|2|asyncPostBackTimeout||90|12
|formAction||Default.aspx|13|pageTitle||Untitled Page|


在客户端的部分Sys.WebForm._onFormSubmitCompleted()会对所有的信息以Json type:type,id:id,content:content进行封装
取出UpdatePanel,设置其innerhtml,客户端详细部分见赵老大的blogs
http://www.cnblogs.com/liuxu-wxy/archive/2007/04/25/727346.html

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:动态创建MSSQL数据库表存储过程

下一篇:asp.net ajax 使用updatepanel进行更新后的提示