欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

驗證一個ASP.NET應(yīng)用程序和頁面的生命周期的實現(xiàn)代碼

 更新時間:2012年04月23日 20:38:31   作者:  
我們知道ASP.NET Page的生命周期實際上是ASP.NET Application的生命周期的一部分。這個周期經(jīng)歷了HTTP Module => HTTP Handler => ASP.NET Page => Http Module這樣一個過程
如果我們能更好地掌握這樣一個過程,那么對單個ASP.NET Page的生命周期也能更好地了解:
下面介紹如何編寫一個簡單的ASP.NET 頁面和一個簡單的HttpModule,對MSDN里提到的ASP.NET的生命周期進(jìn)行驗證
1. 首先使用Visual Studio 2010建立一個空的ASP.NET網(wǎng)站 (ASP.NET 4.0)
2. 添加一個Default.aspx,添加三個ASP.NET控件,分別為TextBox,Button和Validator:
復(fù)制代碼 代碼如下:
  
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<asp:Button ID="btnSubmit" runat="server" Text="OK" onclick="btnSubmit_Click" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please input your name!" ControlToValidate="txtName" ForeColor="#FF3300">
</asp:RequiredFieldValidator>
</div>
</form>

3. 添加一個ASP.NEt的App_code文件夾,新建一個類,內(nèi)容為:
復(fù)制代碼 代碼如下:

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代碼:
復(fù)制代碼 代碼如下:

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內(nèi)容如下:
復(fù)制代碼 代碼如下:

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

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

7. 在文本框內(nèi)輸入內(nèi)容,可得:

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

相關(guān)文章

  • ASP.NET?Core?WebApi返回結(jié)果統(tǒng)一包裝實踐記錄

    ASP.NET?Core?WebApi返回結(jié)果統(tǒng)一包裝實踐記錄

    本文主要是展示了針對ASP.NET Core WeApi結(jié)果統(tǒng)一返回格式的相關(guān)操作,通過示例我們一步一步的展示了完成這一目標(biāo)的不斷升級的實現(xiàn),雖然整體看起來比較簡單,但是卻承載著筆者一次又一次的思考升級
    2022-04-04
  • asp.net xml序列化與反序列化

    asp.net xml序列化與反序列化

    在.NET下有一種技術(shù)叫做對象序列化,它可以將對象序列化為二進(jìn)制文件、XML文件、SOAP文件,這樣, 使用經(jīng)過序列化的流進(jìn)行傳輸效率就得到了大大的提升。
    2008-08-08
  • ASP.NET MVC中將控制器分離到類庫的實現(xiàn)

    ASP.NET MVC中將控制器分離到類庫的實現(xiàn)

    這篇文章主要介紹了ASP.NET MVC中將控制器分離到類庫的實現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2015-06-06
  • MVC、MVP和MVVM分別是什么_動力節(jié)點Java學(xué)院整理

    MVC、MVP和MVVM分別是什么_動力節(jié)點Java學(xué)院整理

    MVC,MVP 和 MVVM分別是什么?MVC(Model-View-Controller)是最常見的軟件架構(gòu)之一,業(yè)界有著廣泛應(yīng)用。它本身很容易理解,但是要講清楚,它與衍生的 MVP 和 MVVM 架構(gòu)的區(qū)別就不容易了。
    2017-08-08
  • asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼

    asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼

    asp.net生成的viewstate垃圾信息超過了20K,如果頁面前二K不是內(nèi)容會被引擎處罰,所以我們需要清理下asp.net生成靜態(tài)后冗余代碼
    2012-10-10
  • .Net集成敏感詞組件的步驟

    .Net集成敏感詞組件的步驟

    現(xiàn)如今大部分服務(wù)都會有用戶輸入,為了服務(wù)的正常運行,很多時候不得不針對輸入進(jìn)行敏感詞的檢測、替換。如果人工做這樣的工作,不僅效率低,成本也高。水弟在這里寫了一個讓小編姐姐都覺得快的敏感詞組件接入示例,不需要依賴第三方服務(wù),只需兩分鐘即可享受清爽文字。
    2021-05-05
  • ASP.NET 控件開發(fā)系列之圖片切換web控件

    ASP.NET 控件開發(fā)系列之圖片切換web控件

    剛開始學(xué)習(xí)控件開發(fā),寫了一個web圖片切換控件,歡迎大家拍磚.
    2010-04-04
  • HTTP 錯誤 500.19 - Internal Server Error解決辦法詳解

    HTTP 錯誤 500.19 - Internal Server Error解決辦法詳解

    這篇文章主要介紹了HTTP 錯誤 500.19 - Internal Server Error解決辦法詳解的相關(guān)資料,這里對錯誤進(jìn)行了詳細(xì)分析及說明該如何解決,需要的朋友可以參考下
    2016-11-11
  • 在 ASP.Net Core 中使用 MiniProfiler的方法

    在 ASP.Net Core 中使用 MiniProfiler的方法

    這篇文章主要介紹了在 ASP.Net Core 中使用 MiniProfiler的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Visual Studio 2017 15.5 正式發(fā)布!性能再提升

    Visual Studio 2017 15.5 正式發(fā)布!性能再提升

    Visual Studio 2017 15.5 正式發(fā)布!性能再提升,時發(fā)布的還有 Visual Studio for Mac 7.3,亮點如下
    2017-12-12

最新評論