国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼

2024-07-10 13:24:09
字體:
來源:轉載
供稿:網友
如果我們能更好地掌握這樣一個過程,那么對單個ASP.NET Page的生命周期也能更好地了解:
下面介紹如何編寫一個簡單的ASP.NET 頁面和一個簡單的HttpModule,對MSDN里提到的ASP.NET的生命周期進行驗證
1. 首先使用Visual Studio 2010建立一個空的ASP.NET網站 (ASP.NET 4.0)
2. 添加一個Default.aspx,添加三個ASP.NET控件,分別為TextBox,Button和Validator:

復制代碼 代碼如下:

  
<form runat="server">
<div>
<asp:TextBox runat="server"></asp:TextBox>
<asp:Button runat="server" Text="OK" />
<asp:RequiredFieldValidator runat="server" ErrorMessage="Please input your name!" ControlToValidate="txtName" ForeColor="#FF3300">
</asp:RequiredFieldValidator>
</div>
</form>


3. 添加一個ASP.NEt的App_code文件夾,新建一個類,內容為:

復制代碼 代碼如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
public class TestClass : IHttpModule
{
HttpApplication httpApp;
public static List<string> EventList = new List<string>();
public TestClass()
{
}
public void Dispose()
{ }
public void Init(HttpApplication context)
{
this.httpApp = context;
//EventList.Clear();
EventList.Add("Initiated");
context.BeginRequest += new EventHandler(context_BeginRequest);
context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest);
context.AuthorizeRequest += new EventHandler(context_AuthorizeRequest);
context.ResolveRequestCache += new EventHandler(context_ResolveRequestCache);
context.AcquireRequestState += new EventHandler(context_AcquireRequestState);
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
context.PostReleaseRequestState += new EventHandler(context_PostReleaseRequestState);
context.ReleaseRequestState += new EventHandler(context_ReleaseRequestState);
context.UpdateRequestCache += new EventHandler(context_UpdateRequestCache);
context.EndRequest += new EventHandler(context_EndRequest);
}
private void context_EndRequest(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: End Request <hr>");
foreach (string str in EventList)
{
httpApp.Response.Write(str + "<br>");
}
EventList.Clear();
}
void context_UpdateRequestCache(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Update Request Cache");
}
void context_ReleaseRequestState(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Release Request State");
}
void context_PostReleaseRequestState(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Post Release Request State");
}
void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Pre Request Handler Execution");
}
void context_AcquireRequestState(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Acquire Request State");
}
void context_ResolveRequestCache(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Resolve Request");
}
void context_AuthorizeRequest(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Authorize Request");
}
void context_AuthenticateRequest(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: AuthenticateRequest");
}
void context_BeginRequest(object sender, EventArgs e)
{
EventList.Add("HTTP Modules: Begin Request");
}
}


4. 修改剛才的Default.aspx的后臺cs代碼:

復制代碼 代碼如下:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Init()
{
TestClass.EventList.Add("ASP.NET Page: Page_Init");
}
protected void Page_Load(object sender, EventArgs e)
{
TestClass.EventList.Add("ASP.NET Page: Page_Load");
}
public override void Validate()
{
TestClass.EventList.Add("ASP.NET Page: Validated");
base.Validate();
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
TestClass.EventList.Add("ASP.NET Page: Event");
}
protected override void Render(HtmlTextWriter writer)
{
TestClass.EventList.Add("ASP.NET Page: Render");
base.Render(writer);
}
protected void Page_Unload(object sender, EventArgs e)
{
TestClass.EventList.Add("ASP.NET Page: Unload");
}
}


5. 修改web.config內容如下:

復制代碼 代碼如下:


<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
</system.web>
<system.web>
<httpModules>
<add type="TestClass"/>
</httpModules>
</system.web>
</configuration>


6. Ctrl+F5執(zhí)行,在瀏覽器里可以看到:

驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼

7. 在文本框內輸入內容,可得:

 

驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼


結論:
1. Module只初始化了一次,當頁面postback的時候,module不會再初始化。
2. Validate和Event事件在頁面第一次初始化的時候不會觸發(fā),但是由于頁面本身存在validate控件和事件按鈕,所以這兩個事件在第二次會被觸發(fā)。
本文參考了codeproject.com的如下一篇文章

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石景山区| 易门县| 武汉市| 博罗县| 佛山市| 昭通市| 玉田县| 云阳县| 门源| 凉城县| 济阳县| 佛冈县| 广南县| 潮州市| 神池县| 民丰县| 盐池县| 夏邑县| 永吉县| 前郭尔| 惠州市| 维西| 淄博市| 郯城县| 苗栗市| 巨野县| 安多县| 大港区| 本溪| 辉南县| 榆树市| 惠安县| 十堰市| 临西县| 宁夏| 永丰县| 宣武区| 莒南县| 宜良县| 新营市| 比如县|