2010-08-31 38 views
2

這是從遵循:MVC Partial Login ControlMVC部分Login控件返回查看

我拿到的AccountController登錄事件後,從我的孩子控制觸發。我現在遇到的問題是,當用戶輸入不正確的密碼時,AccountController登錄帖子會嘗試返回到Logon.aspx頁面而不是我的登錄部分控件。這是從控制器的代碼:

<HttpPost()> _ 
Public Function LogOn(ByVal model As LogOnModel, ByVal returnUrl As String) As ActionResult 
    If ModelState.IsValid Then 
     If MembershipService.ValidateUser(model.UserName, model.Password) Then 
      FormsService.SignIn(model.UserName, model.RememberMe) 
      If Not String.IsNullOrEmpty(returnUrl) Then 
       Return Redirect(returnUrl) 
      Else 
       Return RedirectToAction("Index", "Home") 
      End If 
     Else 
      ModelState.AddModelError("", "The user name or password provided is incorrect.") 
     End If 
    End If 

    ' If we got this far, something failed, redisplay form 
    Return View(model) 
End Function 

Im傳遞returnUrl在所以如果用戶輸入正確的細節,它完美的作品。但是我想要它做的是,如果他們輸入了錯誤的細節,就是在我的子控件上顯示「提供的用戶名或密碼不正確」。

任何想法?

感謝

回答

0

MVC自動查找具有相同的名稱作爲控制器動作視圖,但我不認爲它看起來的局部視圖(我可能是錯的)。

試試這個:

return PartialView(model) 

如果局部視圖名稱是不一樣的控制器動作,你將指定partialview名稱,明確

return PartialView("PartialViewName",model) 

我說的對思維的部分只有當他們輸入不正確的細節時,視圖纔會顯示如果是這樣,你可以通過使用System.ComponentModel.DataAnnotations類來節省很多麻煩,這樣你就可以在同一個登錄表單上顯示驗證消息,所以你不必構建和維護局部視圖。如果你已經知道數據註釋,那麼就看看它,如果不添加評論,我會發布一些有用的鏈接,這些鏈接會比我更好地解釋它。

+0

嗨Doozer,謝謝你的迴應。基本上我的部分(用戶控件)登錄控件位於我的主頁(Html.RenderPartial(「UsrCtlLogin」))。 當用戶登錄時,我想讓它重定向到他們的個人資料頁面。如果他們提供不正確的細節比我希望它留在主頁上,只是在登錄部分控制內顯示一條消息說不正確的細節... 我試過你的返回PartialView(「UsrCtlLogin」,模型)的建議,但它只是重定向到PartialView本身(partialview現在佔據了整個頁面)。 任何想法? – Matt 2010-08-31 23:48:20

+0

也許我沒有得到這個正確的(這是凌晨1點:)),但在logon.aspx頁面沒有<%Html.RenderPartial(「Logon」); %> – MrBliz 2010-09-01 00:09:15

+0

從你之前的問題看,你已經在你的視圖中得到了一個驗證摘要信息,所以在技術上你不需要在你的控制器中提供一個。你有沒有遇到過數據註解類?它確實節省了很多麻煩.... – MrBliz 2010-09-01 00:12:25