2009-01-21 72 views
5

我有一個問題:當我從MasterPage調用Response.Redirect()它不起作用。 那麼,調試我可以看到,直到Pre_Render()方法的目標頁面加載,但然後呈現在前一頁。我怎麼能從MasterPage有Response.Redirect()工作?

下面是一些代碼,以便更好地解釋:

(從MasterPageMain.master.cs)

protected void Page_Init(object sender, EventArgs e) 
{ 
    string m_QueryStringValue = Request.QueryString.Get("action"); 
    if ((!string.IsNullOrEmpty(m_QueryStringValue)) && (m_QueryStringValue.ToLower() == "send")) 
    { 
     if (Session["to"] != null && Session["to"] is List<string>) this.SendPageByMail(); 
     else 
     { 
      Session.Add("AddressToSend", Request.RawUrl); 
      Response.Redirect("~/chooseRecipients.aspx"); 
     } 
    } 
} 

我有一個JavaScript,增加了查詢字符串添加「行動=發送」當我在點擊發送按鈕。

如果我在頁面「〜/ somethingInterestingToSend()」 - 例如,我想要在收件人選擇頁面上,但是當我單擊發送按鈕時,我總是看到相同的頁面。

這是什麼錯誤?

+1

備註:小心使用會話來存儲變量。請記住,用戶可能會在您的站點上打開兩個選項卡,並且每個頁面都會覆蓋以前的值。在查詢字符串 – 2009-01-22 22:31:03

回答

0

我不知道它是你問題的根源,但我會改變2件事。我想你的代碼更改爲:

Response.Redirect("~/chooseRecipients.aspx", false); 

和移動邏輯頁面加載

1

我不知道我完全理解你的問題的描述,但在這裏要考慮幾件事情:

你提到一個發送按鈕。如果這是一個,點擊它觸發一個JavaScript回發到服務器。此回傳是原始網址。我不確定你用Javascript修改了什麼,但我不認爲它會改變回發URL(和查詢字符串)。

如果您需要執行重定向邏輯,則可能需要在服務器上的按鈕單擊事件中執行。

如果您不需要在服務器上執行任何邏輯,你可以使用JavaScript重定向:

window.location = "chooseRecipients.aspx"; 
1

無法驗證這一理論(從內存中目前運行),但給這一個鏡頭:

(對不起,清理了一下代碼,以及)

protected void Page_Init(object sender, EventArgs e) 
{ 
    string m_QueryStringValue = Request.QueryString.Get("action") ?? ""; 
    if (m_QueryStringValue.ToLower() == "send") 
    { 
     if ((Session["to"] as List<string>) != null) 
     { 
      this.SendPageByMail(); 
     } 
     else 
     { 
      Session.Add("AddressToSend", Request.RawUrl); 
      Response.Redirect("~/chooseRecipients.aspx", false); 
      HttpContext.Current.ApplicationInstance.CompleteRequest() 
     } 
    } 
} 
+0

中發送返回URL會更好,對不起,不起作用 – p4bl0 2009-01-26 07:45:37

1

如果你想在用戶沒有登錄重定向到一個登錄頁面,你應該檢查Request.RawUrl()像這樣:

string strURL=Request.RawUrl.ToUpper(); 

if (!strURL.Contains("LOGIN.ASPX") && !strURL.Contains("LOGOUT.ASPX") 
    && !strURL.Contains("ERROR.ASPX") && !strURL.Contains("UNDERCONSTRUCTION.ASPX")) 
{ 
    Response.Redirect("~/Login.aspx", false); 
} 

所有其他網站將被重定向。

相關問題