【问题标题】:MVC - view variable?MVC - 视图变量?
【发布时间】:2013-02-08 19:05:21
【问题描述】:
使用 MVC 模式说我有一个视图和一个控制器:
Controller
User
View
User
login
logout
dashboard
用户控制器有以下动作:
loginAction
logoutAction
dashboardAction
登录视图有一个简单的登录表单,现在我的问题是:
表单应该从哪里获取其操作 url?
这是否应该在视图中硬编码,例如:
<form action="/post.php" method="post">
控制器应该告诉视图似乎不正确,那么这还能去哪里呢?
【问题讨论】:
-
-
-
是的。这是问题的一部分。正确的 MVC 中的视图是 UI 逻辑所在。他们从模型 layer 获取信息,并根据该信息决定如何呈现它(有时通过在 HTML 输出中组合多个模板)。你所拥有的只是templates,你称之为“视图”。
标签:
model-view-controller
【解决方案1】:
控制器告诉视图它需要的一切,视图显示它。视图不知道控制器。
@using (Html.BeginForm("Login", "Account", FormMethod.Post, new { @class = "form-signin", ReturnUrl = ViewBag.ReturnUrl }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<h2 class="form-signin-heading">Please sign in</h2>
<br />
@Html.TextBoxFor(m => m.UserName, new { @class = "input", type = "text", placeholder = "Username" })
<br />
@Html.PasswordFor(m => m.Password, new { @class = "input", type = "password", placeholder = "Password" });
<br /><br />
<button type="submit">Sign in</button>
}
在该登录表单中,控制器上方法的链接是 ("Login", "Account"),其中 'Login' 是方法名称,'Account' 是控制器名称。