刚接触微软的AJAX框架,有如下代码
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
Page updated at: <%= System.DateTime.Now %>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnUpdate" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnUpdate" runat="server" Text="Update Page By AJAX" />
运行后时间的显示会有局部刷新功能,和我想要的一样。
然后我需要在每个页面的显示页面生成时间,于是就写了一个Module类,代码如下
public class PageProcessingTimeModule : System.Web.IHttpModule {
private DateTime _start;
public void Dispose( ) { }
public void Init( System.Web.HttpApplication context ) {
context.BeginRequest += new System.EventHandler( context_BeginRequest );
context.EndRequest += new System.EventHandler( context_EndRequest );
}
private void context_BeginRequest( object sender, System.EventArgs e ) {
_start = DateTime.Now;
}
private void context_EndRequest( object sender, System.EventArgs e ) {
HttpContext.Current.Response.Write(
string.Format( "Request Processing Time: {0}<br />", DateTime.Now - _start )
);
}
}
然后在web.config中<httpModules>中add这个Module。
再运行发现,第一次加载时正常,当我按btnUpdate是就会在IE中报错。
我想问题出在了PageProcessingTimeModule没有进行判断,那么应该如何进行判断呢?
如果不是PageProcessingTimeModule出问题,那没问题出在哪里了,希望高人指点。
当你点击页面上的按钮的时候,只是服务器进行回发,并不是重新请求这个页面,你的问题是不是出在这里呢?
去了解下ASP.NET AJAX客户端生命周期Sys.Application,PageRequestManager和事件的运行先后次序。