事件--[Asp.Net]
Asp.Net的事件:
page_load和page_Init,两者结果不同,page_load,每次刷新都要实例化一次页面,要重新加载,造成下拉框中的加载内容再次被全部加载,出现重复的现象。如果想要避免这样的现象,需要page_load里面加一个条件:if(!Ispostback),如果返回一个值,就重新加载,如果不返回就不用加载了,感觉有点小类似单例模式。
page_Init,每次属性不会重新实例化。
Demo实例:
页面内部查看代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace demo5 { public partial class shijian : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //页面被读入内存,进行处理时会引发该事件,使用这个事件要切记,每次刷新页面,.NET都会重新绘制一个页面,并且按照新页面来处理,每次加载都要触发这个事件 if (!IsPostBack) { DropDownList1.Items.Add("aaaaaa"); DropDownList1.Items.Add("bbbbbb"); } } protected void Page_Init(object sender, EventArgs e) { //页面初始化运行,例如可以在加载控件之前监测客户端环境变量。与load类似,但是网页重新在加载的时候不会再触发这个事件 //DropDownList1.Items.Add("aaaaaa"); //DropDownList1.Items.Add("bbbbbb"); } protected void Button1_Click(object sender, EventArgs e) { DropDownList1.Items.Add(TextBox1.Text); } } }
前台页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="shijian.aspx.cs" Inherits="demo5.shijian" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList> <br /> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br /> <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> </div> </form> </body> </html>