2009-02-19 106 views
1

我有一個名爲Login.ascx的局部視圖,它包含我在整個站點的多個頁面上包含的登錄框。它的工作正常,當信息是正確的,但我想做驗證,所以如果登錄信息不正確,我想重定向到他們在之前的視圖,以顯示他們的登錄錯誤。什麼是正確的說法,回到你來自的視角?ASP.NET MVC局部視圖和重定向

回答

2

聽起來好像不是問我如何做到這一點,你應該問自己爲什麼我這樣做。也許這是一個設計決定,而不是技術問題。

但如果你真的要對多個登錄頁面,你可以嘗試一個控制器動作......

return Redirect(Request.UrlReferrer.ToString()); 

或者在TempData的保持路由名稱,只是用RedirectToRoute(TempData的[「LoginRoute 「]);

儘管這兩種解決方案都有不好的代碼味道。

請注意,如果您沒有檢查即將引用其他網站的跨網站注入。您可能需要對推薦網址進行一些驗證。

0

AccountController的內置Login方法有一個名爲returnUrl參數,你可以使用像這樣:如果指定returnUrl參數作爲

Return Redirect(returnUrl); 

Return RedirectToAction(returnUrl); 

有效的actionlink。

最近,我有類似的問題 - 你也許能找到一些here ...

+0

問題在於,如果由於驗證問題而返回,則returnUrl參數已消失。 – 2009-02-19 22:13:28

5

如果登錄任何網頁失敗,我想我會引導他們到了錯誤,而不是以前的登錄視圖頁。專用登錄頁面可能會有更多UI空間來顯示錯誤等,而不是另一頁面上的登錄控件。話雖如此,您可能需要在Login操作中包含一個returnUrl參數,以便當登錄成功時,用戶將被引導回它們(或正在嘗試訪問的位置)。