Asp.net MVC部分视图模型状态错误
我无法将模型状态错误从控制器传递到局部视图 我有两个部分视图的索引页-注册和登录。如果注册失败,我会为Username属性设置一个model错误,并将浏览器重定向到TempData中带有SignUpModel的索引 模型内容被正确传达,我看到用户名字段在失败的工作后被预先填充。但是,我没有看到错误消息 索引中的ViewData字典为空。并且索引的ModelState为空 主视图Asp.net MVC部分视图模型状态错误,asp.net,model-view-controller,partial-views,modelstate,addmodelerror,Asp.net,Model View Controller,Partial Views,Modelstate,Addmodelerror,我无法将模型状态错误从控制器传递到局部视图 我有两个部分视图的索引页-注册和登录。如果注册失败,我会为Username属性设置一个model错误,并将浏览器重定向到TempData中带有SignUpModel的索引 模型内容被正确传达,我看到用户名字段在失败的工作后被预先填充。但是,我没有看到错误消息 索引中的ViewData字典为空。并且索引的ModelState为空 主视图 <h2>Sign Up</h2> @Html.Partial("SignUp"
<h2>Sign Up</h2>
@Html.Partial("SignUp", TempData["SignUpModel"])
<h2>Sign In</h2>
@Html.Partial("Login", TempData["LoginModel"])
查看为
TextBoxFor(m=>m.Username)
生成的html,看看您是否绑定到了正确的控件名Yes I am。模型数据很好地通过了测试。但是,modelstate将丢失。如果modelstate
无效,则返回视图。重定向不会保留来自ModelState
(这是当前控制器的属性)的值,但它是一个局部视图。如果我返回视图,它只呈现部分内容,父视图的所有内容都消失了。有没有办法在HomeController/Index上设置ModelState?“return HomeController.Index()”会导致问题吗?
@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"));
}
}