我需要一个视图的两个动作方法
一个操作方法名称是“LogOn”,其他操作方法名称是“re”。 视图名称是LogOn。
我需要相同的显示,但功能不同。
一种操作方法是登录,其他操作方法是注册,页面是一个。
所以有两个功能,两个UI都在同一个视图上。
我是如何实现这一点的,因为我是MVC的新手
答案 0 :(得分:1)
您的视图需要有2个表单,一个用于注册,另一个用于登录。有许多方法可以处理这个问题,包括包含LogInModel和RegisterModel属性的单个视图模型,使用@Html.Action()
调用返回部分视图的[ChildActionOnly]
方法或使用@Html.Partial()
返回部分视图。例如,创建2个部分视图
_Login.cshtml
@model yourAssembly.LoginModel
@using (Html.BeginForm("Logon", "Account"))
{
.... // login controls
<input type="submit" value="Log In" />
}
_Register.cshtml
@model yourAssembly.RegisterModel
@using (Html.BeginForm("Register", "Account"))
{
.... // register controls
<input type="submit" value="Register" />
}
然后在男人视图中
@Html.Partial("_Login", new LogInModel()) // renders the login form
@Html.Partial("_Register", new RegisterModel()) // renders the registration form
答案 1 :(得分:0)
理想情况下,每个操作都有不同的视图,但是,您所描述的内容是可能的。
一种方法是使用viewbag设置应显示的部分视图。
控制器:
public ActionResult Index()
{
ViewBag.ActionType = "Register"
if(LOGIC THAT DETERMINES LOGIN){
ViewBag.ActionType = "Login"
}
// .. Any additional logic
return View();
}
然后在视图中:
@* Assuming these are the only options *@
@if(ViewBag.ActionType == "Register"){
@Html.Partial("_Register")
}else{
@Html.Partial("_Login")
}
同样这是针对MVC的,因为View不应该真正包含逻辑,但是上面会向视图发送一条消息来确定要显示的部分视图。这仍然需要将视图分成包含其特定形式的部分视图(_Login.cshtml
和_Register.cshtml
)。
但是允许用户导航一个URL并显示两种不同的形式。