ASP.NET WebForm--事件

事件

生命周期

当我们在 浏览器 地址栏中输入网址,回车查看页面时,这时会向服务器端IIS)发送一个request请求,服务器就会判断发送过来的请求页面,当完全识别 TTP页面处理程序类后,ASP.NET运行时将调用处理程序的 ProcessRequest 方法来处理请求、创建页面对象。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。接下来被创建页面对象的ProcessRequest方法使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及执行回发服务器端事件。之后,页面进入显示模式:收集更新的视图状态,生成 HTML 代码并随后将代码发送到输出控制台。最后,卸载页面,并认为请求处理完毕。其中页面对象ProcessRequest方法 完成的这一系列事件的处理过程就是Asp.Net页面生命周期。

生命周期阶段

  1. 请求页面:页请求发生在页生命周期开始之前。
  2. 开始:在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。
  3. 初始化页面:页面初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值
  4. 加载页面:加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。
  5. 验证:在验证期间,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。
  6. 回发事件处理:如果请求是回发请求,则将调用所有事件处理程序。
  7. 呈现页面:在页面呈现期间,视图状态将被保存到页面,然后页面将调用每个控件,以将其呈现的输出提供给页的Response属性的OutputStream。
  8. 卸载页面:完全呈现页、将页发送至客户端并准备丢弃时,将调用卸载。此时,将卸载页属性(如Response和Request)并执行清理。

生命周期事件

页面初始化 Page_Init
加载View State LoadViewState
回发数据处理 LoadPostData
页面加载 Page_Load
回发通知 RaisePostDataChangedEvent
回发事件处理 RaisePostBackEvent
页面预渲染 Page_PreRender
保存 viewstate SaveViewState
Page渲染 Page_Render
Page 卸载 Page_UnLoad

Page_Init

aspx初始化时触发,只执行一次,常用于页面初始化,并且执行在page_load之前,如果在aspx的程序中需要使用该方法,那么该方法的类需要继承 System.Web.UI.Page

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace wangjin.Common
{
//因为类只能单继承,所以这儿必须继承page页,这样后面的类继承该类之后,也等同于继承了page类,并且有了该类的方法
   public class CheckSession:System.Web.UI.Page
    {
       //Init事件:aspx初始化时触发.
       public void Page_Init(object sender, EventArgs e)
       {
           if (Session["userInfo"] == null)
           {
               Response.Redirect("UserLogin.aspx");
           }
       }

    }
}

Page_Load 事件

Page_Load 事件是众多 ASP.NET 可理解的事件之一。Page_Load 事件会在页面加载时被触发,然后 ASP.NET 会自动调用子例程 Page_Load,并执行其中的代码:

<script runat="server">
	Sub Page_Load
	lbl1.Text="The date and time is " & now()
	End Sub
</script>

<html>
	<body>
		<form runat="server">
			<h3><asp:label id="lbl1" runat="server" /></h3>
		</form>
	</body>
</html>

Page_Load 子例程会在页面每次加载时运行。如果您仅希望在页面第一次加载时执行 Page_Load 子例程中的代码,您可以使用 Page.IsPostBack 属性。如果 Page.IsPostBack 属性为 false,则页面第一次被载入,如果为 true,则页面传回服务器(例如,通过点击表单上的按钮):

<script runat="server">
	Sub Page_Load
	if Not Page.IsPostBack then
	  lbl1.Text="The date and time is " & now()
	end if
	End Sub
	
	Sub Submit(s As Object, e As EventArgs)
	lbl2.Text="Hello World!"
	End Sub
</script>

<html>
	<body>
		<form runat="server">
			<h3><asp:label id="lbl1" runat="server" /></h3>
			<h3><asp:label id="lbl2" runat="server" /></h3>
			<asp:button text="Submit" onclick="submit" runat="server" />
		</form>
	</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sufengmarket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值