我无法将模型状态错误从控制器传递到部分视图。
我有两个部分视图的索引页面 - 注册并登录。如果注册失败,我为 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"));
}
}