Application_PreSendRequestContent是太晚在頁面生命週期內這樣做。 此階段已經執行了MasterPage。
Global.asax確實是應用程序事件的地方,而不是頁面特定的。請注意,Application_BeginRequest等許多應用程序事件都是在任何請求上調用的,而不僅僅是aspx Page請求。這些事件中的許多事件都是針對所請求的每個js腳本,圖像,css文件等引發的。
這裏是事件在Global.asax中一個很好的列表:https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-5771721.html
,我知道,你肯定可以改變主頁面在頁面Page_PreInitevent處理器唯一的地方
protected void Page_PreInit(object sender, EventArgs e)
{
this.Page.MasterPageFile = "~/Custom.master";
}
編輯: 閱讀你的評論,這聽起來對你來說,你需要從一個基本頁面派生你的頁面,這個頁面會在一個地方做出改變。
using System;
namespace TestWebApplication
{
public class PageBase : System.Web.UI.Page
{
protected void Page_PreInit(object sender, EventArgs e)
{
Page.MasterPageFile = "~/Custom.master";
}
}
}
然後改變所有的頁面繼承這個而不是System.Web.UI.Page ...
//public partial class WebForm1 : System.Web.UI.Page
public partial class WebForm1 : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
嗨, 那就是如何我此刻卻用做新的頁面一直在添加,而且我已經在代碼中改變了幾次邏輯,它開始變得亂七八糟,更新文件,這就是爲什麼我只想在一個地方做這個。 我會嘗試PreRequestHandlerExecute,看看發生了什麼! 謝謝 – StefanE 2010-05-21 12:49:44
看我的編輯。使用您的所有頁面繼承的基本頁面 – 2010-05-21 13:04:36
好的,那太棒了!我爲此贊成10票。我確實找到了一種在Application_PreRequestHandlerExecute中執行此操作的方法,但其他問題卻顯示出來了。我設置的會話變量尚未更新,它在此事件後執行..但是此代碼需要不捕獲每個事件。 如果(Context.Handler是IRequiresSessionState || Context.Handler是IReadOnlySessionState) {// 代碼 } – StefanE 2010-05-21 13:23:31