Welcome 微信登录

首页 / 网页编程 / ASP.NET / Asp.net ViewState—又见ViewState

Asp.net ViewState—又见ViewState2011-12-30 博客园 MythYsJh序

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无关的(她是无辜的)。真正的幕后"黑手"又会是谁呢?