Welcome 微信登录

首页 / 网页编程 / ASP.NET / 关于ASP.NET页面生命周期的整体把握

关于ASP.NET页面生命周期的整体把握2013-11-28 cnblogs JasenKin对于每一个.NET程序员,对于ASP.NET页面生命周期都有一定的了解和把握。关于一些细节方面请参考 http://blog.sina.com.cn/s/blog_5f7aa2970100d5h4.html,内容比较详尽,本文将不再概述。本文主要是从 继承以及视图状态,事件,委托,容器控件以及子控件这些方面来把握和控制整体的页面生命周期。

先看下下面4个相关页面的代码(为降低复杂度,很多代码被删减与精简,仅提供最基本的操作代码)。仅仅 几个文件,先看下整体文件的布局,有一个整体的把握。            

(一)父类的相关事件以及处理

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 public class UserParentPage:System.Web.UI.Page{/// <summary>/// 对回传数据的处理,以及其他内容的设置、获取/// </summary>/// <param name="e"></param>protected override void OnInit(EventArgs e){Core.Trace.TraceInfo("UserParentPageOnInit");base.OnInit(e);//编写相应的代码防止SQL注入//System.Web.HttpContext.Current.Request.QueryString/Form//根据上下文对象来检测,以及做出相应的处理//以及其他一些内容的设置、控制等等}protected override void OnLoad(EventArgs e){Core.Trace.TraceInfo("UserParentPageOnLoad");base.OnLoad(e);//编写相应的代码对整体页面的控制}}
(二)用户控件(子控件)的相关内容

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1public partial class UserEventControl : System.Web.UI.UserControl{public delegate void ChangedHandler();public event ChangedHandler Changed;private void Page_Load(object sender, System.EventArgs e){Core.Trace.TraceInfo("UserEventControlOnLoad");if (!Page.IsPostBack){Core.Trace.TraceInfo("UserEventControlOnLoad!Page.IsPostBack==true");SetContent();}}private void SetContent(){int len =12,num = 2,perRowMaxCount=8; System.Text.StringBuilder table = new System.Text.StringBuilder();for (int i = 0; i <= num; i++){table.Append(@"<tablebordercolor="black" width="100%"><tr align="left">");for (int j = 0; j < perRowMaxCount; j++){int p = i * perRowMaxCount + j;if (p < len){string paramValue ="param"+p.ToString();string showValue ="show"+p.ToString();table.Append(string.Format(@"<td width="12.5%"><ahref="javascript:__doPostBack(""{2}"",""{0}"")" CommandName=""{0}"" class="line"><font>{1}</font></a></td>", paramValue,showValue, lbtnShow.ClientID.Replace("_lbtnShow", "$lbtnShow")));}else{table.Append(string.Format(@"<td width="12.5%"></td>"));}}table.Append(@"</tr></table>");}lblShow.Text = table.ToString();}public string CurrentID{set{ViewState["CurrentID"] = value;}get{return (string)ViewState["CurrentID"];}}protected override void OnInit(EventArgs e){Core.Trace.TraceInfo("UserEventControlOnInit");InitializeComponent();base.OnInit(e);}private void InitializeComponent(){this.lbtnShow.Click += new System.EventHandler(this.lbtnShow_Click);this.Load += new System.EventHandler(this.Page_Load);}/// <summary>/// 单击时将触发/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void lbtnShow_Click(object sender, System.EventArgs e){Core.Trace.TraceInfo("UserEventControllbtnShow_Click");CurrentID = Request.Form["__EVENTARGUMENT"];//获取回传值SetContent();//设置内容----因为有些内容被修改过,如样式什么的,本例忽略Changed();//触发事件}}