簡體   English   中英

如何在所有aspx頁面上運行代碼?

[英]How to make a code run on all aspx pages?

我需要創建一個代碼來讀取QueryString並在Session上設置一個值,在頁面的末尾我需要清除Session

如何在所有.aspx頁面上運行這樣的代碼?

兩種可能性是:

  • 創建一個繼承自System.Web.UI.Page的類。 在那里插入代碼,所有頁面都從該類繼承而不是System.Web.UI.Page。
  • 創建一個HttpModule

以及我看到你有2個解決方案

  1. 使用母版頁並在那里執行

  2. 繼承頁面並將其用作所有頁面上的基類

一個問題為什么必須存儲在會話中? 如果同一個用戶同時執行2個頁面,則會出現問題(第一個完成將清除另一個頁面的sesson)

如果你在頁面運行時只需要數據,你可以將它保存在普通變量中,否則使用viewState!

或者只使用Global.asax: http//en.wikipedia.org/wiki/Global.asax

創建一個繼承自Page的類,而不是Page

或者,如果您的應用程序設計允許,您可以使用MasterPage

將代碼放在基頁中,讓所有.aspx頁面都從基頁繼承。

我使用編寫類的方法從System.Web.UI.Page繼承。 但是,我沒有發現這種方法的實現是顯而易見的。 這是我最終寫的代碼:

public class BasePage : System.Web.UI.Page
{                        
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        // Code here will be run when any page loads that inherits from BasePage
        }                                                
    }
}

包含所有頁面一部分的代碼的簡單方法是將Windows.Web.UI.Page子類化,並使所有頁面都繼承自此新類,而不是Windows.Web.UI.Page。 新類可以獨立於每個單獨的頁面注冊頁面事件。

另一種選擇,如果您不希望它成為每個頁面的一部分,並且您希望確保即使開發人員不繼承您的新頁面子類也會運行它,那就是編寫HTTPModule。 這將掛鈎到ASP.NET處理管道,您可以觸發管道事件,例如身份驗證或顯示頁面。 您也可以編寫HTTPHandler並將其運行出管道。 (所有頁面都實現了IHTTPHandler,在鏈的某個地方。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM