展开全部
这是asp.net本身的运行机制。具体控制逻辑在Page这个类里面,你可以去看下Page的ProcessRequestMain这个方法的源码。
。。。。。
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin PreLoad");
this.OnPreLoad(EventArgs.Empty);
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "End PreLoad");
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin Load");
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_ENTER, this._context.WorkerRequest);
this.LoadRecursive();//Load事件
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_LEAVE, this._context.WorkerRequest);
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "End Load");
//接着开始处理回发事件
if (this.IsPostBack)
{
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin ProcessPostData Second Try");
this.ProcessPostData(this._leftoverPostData, false);
if (context.TraceIsEnabled)
{
this.Trace.Write("aspx.page", "End ProcessPostData Second Try");
this.Trace.Write("aspx.page", "Begin Raise ChangedEvents");
}
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER, this._context.WorkerRequest);
this.RaiseChangedEvents();
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE, this._context.WorkerRequest);
if (context.TraceIsEnabled)
{
this.Trace.Write("aspx.page", "End Raise ChangedEvents");
this.Trace.Write("aspx.page", "Begin Raise PostBackEvent");
}
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER, this._context.WorkerRequest);
this.RaisePostBackEvent(this._requestValueCollection);
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE, this._context.WorkerRequest);
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "End Raise PostBackEvent");
}
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin LoadComplete");
this.OnLoadComplete(EventArgs.Empty);
。。。。。。。。。。
。。。。。
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin PreLoad");
this.OnPreLoad(EventArgs.Empty);
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "End PreLoad");
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin Load");
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_ENTER, this._context.WorkerRequest);
this.LoadRecursive();//Load事件
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_LOAD_LEAVE, this._context.WorkerRequest);
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "End Load");
//接着开始处理回发事件
if (this.IsPostBack)
{
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin ProcessPostData Second Try");
this.ProcessPostData(this._leftoverPostData, false);
if (context.TraceIsEnabled)
{
this.Trace.Write("aspx.page", "End ProcessPostData Second Try");
this.Trace.Write("aspx.page", "Begin Raise ChangedEvents");
}
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_ENTER, this._context.WorkerRequest);
this.RaiseChangedEvents();
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_POST_DATA_CHANGED_LEAVE, this._context.WorkerRequest);
if (context.TraceIsEnabled)
{
this.Trace.Write("aspx.page", "End Raise ChangedEvents");
this.Trace.Write("aspx.page", "Begin Raise PostBackEvent");
}
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_ENTER, this._context.WorkerRequest);
this.RaisePostBackEvent(this._requestValueCollection);
if (EtwTrace.IsTraceEnabled(5, 4)) EtwTrace.Trace(EtwTraceType.ETW_TYPE_PAGE_RAISE_POSTBACK_LEAVE, this._context.WorkerRequest);
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "End Raise PostBackEvent");
}
if (context.TraceIsEnabled) this.Trace.Write("aspx.page", "Begin LoadComplete");
this.OnLoadComplete(EventArgs.Empty);
。。。。。。。。。。
展开全部
因为postback了 页面就要重新加载一次 你不希望执行pageload就改为ClientClick或者用客户端控件
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是asp.net page类生命周期来的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询