如果我嘗試訪問一個具有檢查身份驗證過濾器的網頁,那麼當我瀏覽匿名時,它會重定向到登錄頁面。因此,URL可能如下所示:我可以在GET請求上訪問querystring變量,但不能訪問POST
www.example.com/user/login?ReturnUrl=/user/settings
我的登錄操作有兩種方法,分別是GET和POST請求類型。
[AcceptVerbs("GET")
public ActionResult Login()
{
}
[AcceptVerbs("POST")
public ActionResult Login(FormCollection f)
{
}
下面的代碼是GET和POST登錄操作:
string redirectUrl = "";
if(Request.QueryString["ReturnUrl"] != null)
{
redirectUrl = Request.QueryString["ReturnUrl"];
}
在調試模式下,該變量被正確的GET動作初始化,但在POST操作它只是跳過該調用,這意味着它是NULL。
這是爲什麼? ReturnUrl在url中仍然可見?
我無法重新創建此行爲。你的表單動作url *包含了返回url,對嗎? – 2010-02-02 20:05:12
不,它沒有,表格發佈到/用戶/登錄 – Blankman 2010-02-02 20:14:16
那麼這就是你的問題!你需要它發佈到完整的網址,包括查詢字符串,例如。 <形式行動=「/用戶/密碼RETURNURL = /用戶/設置?」方法=「郵報」> – 2010-02-02 20:16:59