2010-08-31 74 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