我試圖將ReturnUrl
查詢字符串傳遞到我的登錄頁面。我有一個部分登錄視圖(有點像登錄框)和一個登錄視圖。現在,我有以下線在我的部分觀點:在ASP.NET MVC中編碼returnUrl查詢字符串
using (Html.BeginForm("Login"
, "Account"
, new { returnUrl=HttpUtility.UrlEncode(
Request.QueryString["ReturnUrl"])
?? HttpUtility.UrlEncode(Request.Path)
}
, FormMethod.Post))
當我點擊我的部分觀點的提交按鈕(例如,從 http://localhost:12345/Product/1234/Product1
),
我會被重定向到我的登錄頁面以下網址:
http://localhost:12345/Account/Login?returnUrl=%2FProduct%2F1234%2FProduct1
但如果我登錄,我會看到一個http 400的響應,因爲頁面返回
http://localhost:12345/Account/%2fProduct%2f1234%2fproduct1
。另外,如果我輸入了錯誤的憑證,則會導致returnUrl
查詢字符串被再次編碼,因此每個%
字符都會再次轉換爲%25
!
我應該提到如果我手動鍵入
http://localhost:12345/Account/Login?returnUrl=/Product/1234/Product1
(不進行編碼),並登錄,我成功地重定向到指定的路徑。
我想我錯過了一些明顯的東西。但無法找出什麼。
謝謝。
是不是自動爲您完成的編碼?你不需要自己編碼。 – 2011-12-31 18:38:19