Asp.net ViewState—又见ViewState
序 HTML <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="ddlTest" runat="server" /><asp:Button ID="btnTest" runat="server" Text="Test"/> </div> </form> </body> </html> CS using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Init(object sender, EventArgs e) { ddlTest.Items.Add(new ListItem("Init", "Init")); } protected void Page_Load(object sender, EventArgs e) { ddlTest.Items.Add(new ListItem("Load", "Load")); } } 最近看见有朋友说Page_Init只执行一次,我始终将信将疑,于是自己测试一下,结果发现在每次单击按钮的时候还真的不会再增加Init这样的列表项了。难道Page_Init还真的是只执行一次么?空想也不是解决办法,打个断点跟踪下吧,发现每次回发时Init是会执行的,由此可见出现这种情况是和Init无关的(她是无辜的)。真正的幕后''黑手''又会是谁呢? 一、页面生命周期 一个ASP.NET页面大致可以分为一下几个阶段: 1,因为它也是一个类,所以构造函数是必定首当其冲的,不过我们一般很少会用到它。 2,初始化阶段。在这个阶段,asp.net为我们细化了三个方法:Page_PreInit,Page_Init,Page_InitComplete,他们的方法签名和Page_Load完全一样,全是 void Page_XXX( object sender, EventArgs e )..的形式。而方法名称也都是固定的(这些可以通过查看TemplateControl源码看到)。 3,Load阶段。这个阶段我们可以通过这几个方法来对页面进行控制:Page_PreLoad,Page_LoadComplete,Page_Load。 4,如果有定义了引起回发的控件的相应事件处理程序(比如按钮,点击后引起回发,这时如果你在后台定义了该按钮的Click事件处理程序),则执行该事件处理程序(会在Page_LoadComplete执行前执行)。 5,呈现。同样,有这样几个方法:Page_PreRender,Page_PreRenderComplete,Render。 6,卸载页面,释放资源:Page_Unload 注:这些方法和相应的事件绑定是通过在aspx页面的@Page指令里设置AutoEventWireup="true"来完成的。如果去掉这个属性,则这些方法将不再发挥作用。 下面看个小例子: 执行顺序 using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Default2 : System.Web.UI.Page { |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |