【发布时间】:2011-12-16 16:01:05
【问题描述】:
我有一个带有提交公式 (Html.BeginForm()) 的视图,并且想在控制器中设置一些模型属性,返回视图,希望在查看。
这是我在标准 MVC 3 登录公式中的模式。
精度:我真的想在 POST 处理中设置这些属性,而不是在 GET 中。
您能否解释一下为什么我在控制器中设置的属性从不显示在视图上?
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
model.RememberMe = true;
model.UserName = "foobar";
return View(model);
}
使用类似于标准 LogOn.cshtml 的视图:
@using (Html.BeginForm()) {
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="editor-label">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
<p>
<input type="submit" value="Log On" />
</p>
</fieldset>
</div>
}
【问题讨论】:
-
你能告诉我,在查看它是否显示
@Model.UserName吗?? -
您确定正在调用您的登录操作吗?当 viw 第一次打开时,它不会点击动作的 [HttpPost] 版本。
-
@BenFinkel:是的,这就是我的想法……
-
在初始加载时,它将响应 HTTP GET,而不是 POST。您的代码只有在发布时才会受到影响(如果出现错误并且您想重新显示视图,这会很好)。
标签: asp.net-mvc-3