這可能是真的哈克,但我開始變得絕望是否可以阻止請求進入頁面?
是否有可能阻止實際擊中實際頁面...即一個請求,我可以寫東西的Application_BeginRequest處理該部分我想要,然後跳過生命週期的其餘部分?
哦,是有可能做到這一點以這樣的方式使AJAX更新面板不發脾氣(返回一些默認的內容,說:「我沒有做任何對不起」)
好,瘋狂的問題結束。
這可能是真的哈克,但我開始變得絕望是否可以阻止請求進入頁面?
是否有可能阻止實際擊中實際頁面...即一個請求,我可以寫東西的Application_BeginRequest處理該部分我想要,然後跳過生命週期的其餘部分?
哦,是有可能做到這一點以這樣的方式使AJAX更新面板不發脾氣(返回一些默認的內容,說:「我沒有做任何對不起」)
好,瘋狂的問題結束。
考慮在請求處理流程的前端寫一個HTTPModule來處理這個問題。
當然,只是到Response.End調用():
protected void Application_BeginRequest(object sender, EventArgs e)
{
if (Request.Url.AbsolutePath.Equals("/PageYouWantToSuppress.aspx", StringComparison.OrdinalIgnoreCase))
{
// Do your stuff
Response.End();
}
}
ETA:我不知道你的問題的UpdatePanel的一部分。
是的,這個我試過 - 它似乎工作,但不會返回更新面板所需的東西。任何人都知道更新面板需要滿足什麼? – Paul 2009-10-15 15:54:40
您可以防止部分代碼的從這樣的部分頁面更新期間執行:
if (! ScriptManager.IsInAsyncPostBack) {
// Code in here won't happen during UpdatePanel actions
}
UpdatePanel的執行大部分的ASP.NET頁面生命週期的設計。如果您中止該流程(例如通過Response.End()
),則請求無法完成,因此客戶端將無法獲取更新頁面HTML所需的數據。
當觸發一個UpdatePanel ASP.NET服務器端方法執行以下操作:
(詳細見my recent answer to this question,看看UpdatePanel Control Overview或this article瞭解詳細信息)
有幾種替代UpdatePanel的AJAX實現不涉及在整個頁面生命週期去。其中最受歡迎的是Using jQuery to directly call ASP.NET AJAX page methods。
使用jQuery進行AJAX調用可以讓你更接近金屬(可以這麼說),而不是UpdatePanels,但是有很多好的幫助讓你開始 - 在StackOverflow本身和Encosia(最後一個鏈接的源代碼) 。
這可以工作 - 它如何防止請求進一步通過HTTPModule? – Paul 2009-10-15 15:53:15
@IP - Response.CompleteRequest將停止請求。 – David 2009-10-16 19:42:54