在C#程序中,Page_Init()事件不可用,请指教。
我在做一个ASP.net的练习,就是比较Page对象的Load()事件与Init()事件的区别。
我是这么做的:
(1)新建一个ASP.NET 2.0网站,切换到设计视图。向缺省页面WebForm1.aspx中添加一个用于布局的HTML表格,在表格中分别填加ListBox1和ListBox2两个控件,再填加一个Button1控件。
(2)将按钮控件Button1的Text属性设置为“引起回发”.
(3)编写后台C#代码,代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace exam7
{
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.ListBox ListBox1;
protected System.Web.UI.WebControls.ListBox ListBox2;
protected System.Web.UI.WebControls.Button Button1;
protected static string title; //此变量用来显示网页标题,相应的在html代码中使用了<%=title%>
protected void Page_Init(object sender,EventArgs e)
{
for(int j=0;j<=4;j++)
{
ListBox1.Items.Add(j.ToString());
}
}
protected void Page_Load(object sender,EventArgs e)
{
title="Load事件与Init事件的比较";
for(int i=0;i<=4;i++)
{
ListBox2.Items.Add(i.ToString());
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion//灰色部分为自动生成的。
}
}
如果运行顺利,理论上是:在Page对象的Load事件和Init事件中分别向ListBox1和ListBox2中填充若干数字作为选项。按钮控件无需编写任何代码,只是要在用户单击按钮时引起一个服务器端回发。页面初次加载后,两个列表框中填充的数据完全相同,但单击按钮或刷新页面引起回发后在Page_Load事件中填充的ListBox2控件的选项将出现重复。
可是我运行后,在Page_Init事件中填充的ListBox1控件根本没有填充内容。然后我将 title="Load事件与Init事件的比较"; 这一句换到Page_Init事件里去,发现,网页标题就不会变成“Load事件与Init事件的比较”了,然后,我判断,在C#程序中,Page_Init事件代码没有执行。
请高手指点迷津,谢谢!