假设我希望我的_Layout
包含登录表单而不是默认的单独登录视图。我该怎么做?搜索周围给了我非常模糊/不确定的答案。
___________________________________
| _______________________________ |
| | Logo _____ | |
| | | | | |
| | |Login| | |
| | |_____| | |
| |_______________________________| |
| |
| Content |
| |
| |
| Footer |
|___________________________________|
目前我已经创建了LoginController
和相应的LoginViewModel
来处理给定的用户名/密码组合。然后是POSTS
到LoginController/Index
的表单。这个解决方案充满了问题。例如,如何为_Layout
提供正确的模型?我如何进行验证?如何处理ReturnUrl
?
为每个继承的单个模型创建一个抽象类,然后将其提供给_Layout
,似乎很难看。
答案 0 :(得分:1)
不是最干净的解决方案:
表单本身提交给指定的控制器/操作:
@Using Html.BeginForm("Login", "Account")
...
End Using
控制器只有HTTPPOST操作:
Public Class AccountController
' POST: /Account/Login
<HttpPost>
Function Login(ByVal viewModel as LoginViewModel) As ActionResult
WebSecurity.Login(viewModel.Username, model.Password, False)
TempData("LoginViewModel") = viewModel
Return RedirectToLocal(viewModel.ReturnUrl)
End Function
End Class
然后在我的_Layout中,我包含登录部分:
@Code
Dim model As LoginViewModel
If TempData("LoginViewModel") IsNot Nothing Then
model = TempData("LoginVieWModel")
Else
model = New LoginViewModel
End If
Html.RenderPartial("_LoginPartial", model)
End Code