我无法将模型状态错误从控制器传递到局部视图。
我有两个部分视图的索引页面 - 注册并登录。如果注册失败,我为Username属性设置模型错误,并使用TempData中的SignUpModel将浏览器重定向到索引。
模型内容正确传达,我看到在失败后预先填充了用户名字段。但是,我没有看到错误消息。
索引中的ViewData字典为空。并且索引的ModelState为空。
主视图
<h2>Sign Up</h2>
@Html.Partial("SignUp", TempData["SignUpModel"])
<h2>Sign In</h2>
@Html.Partial("Login", TempData["LoginModel"])
注册
@model WebApp1.Models.SignUpModel
@using (Html.BeginForm("SignUp", "Account"))
{
<p>
@Html.TextBoxFor(m => m.Username)
@Html.ValidationMessageFor(m => m.Username)
</p>
<p>
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</p>
<button type="submit">Sign Up</button>
}
控制器
[HttpPost]
public ActionResult SignUp(Models.SignUpModel model)
{
if (ModelState.IsValid)
{
/* do something */
if (success)
{
/* do something */
return Redirect(Url.Action("Index", "Home"));
}
else
{
ModelState.AddModelError("Username", "SomeReason");
TempData["SignUpModel"] = model;
return Redirect(Url.Action("Index", "Home"));
}
}
else
{
TempData["SignUpModel"] = model;
return Redirect(Url.Action("Index", "Home"));
}
}