Asp.net mvc 将修改后的viewModel返回到视图
我想做这样的事情:Asp.net mvc 将修改后的viewModel返回到视图,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我想做这样的事情: [HttpPost] public ActionResult Index(Foo foo) { foo.Name = "modified"; return View(foo); } var newVal = new ValueProviderResult("updated value", "updated value", CultureInfo.InvariantCulture); ModelState.SetModelValue("MyFieldName
[HttpPost]
public ActionResult Index(Foo foo)
{
foo.Name = "modified";
return View(foo);
}
var newVal = new ValueProviderResult("updated value", "updated value", CultureInfo.InvariantCulture);
ModelState.SetModelValue("MyFieldName", newVal);
但是,当渲染我的视图时,它始终具有旧值!如何修改和返回?我必须每次都清除ModelState吗
我的看法是:
@model MvcApplication1.Models.Foo
@using (Html.BeginForm())
{
@Html.TextBoxFor(m => m.Name)
@Html.TextBoxFor(m => m.Description)
<input type="submit" value="Send" />
}
@model mvcapapplication1.Models.Foo
@使用(Html.BeginForm())
{
@Html.TextBoxFor(m=>m.Name)
@Html.TextBoxFor(m=>m.Description)
}
我认为这可能是预期的行为,因为将同一模型发送回视图的“正常”场景是当模型出现错误时
请参阅:MVC在回发时使用ModelState填充视图,而不是传递的模型。要在返回视图之前更新单个字段,请尝试以下操作:
[HttpPost]
public ActionResult Index(Foo foo)
{
foo.Name = "modified";
return View(foo);
}
var newVal = new ValueProviderResult("updated value", "updated value", CultureInfo.InvariantCulture);
ModelState.SetModelValue("MyFieldName", newVal);
这里有更多信息:@Shyju只有在我使用'ModelState.Clear();'时,它才对我有效在设置修改后的属性之前,会发生其他情况。这应该行得通。好吧,我创建了一个新的mvc 3和mvc 4项目,但它不起作用:(微软的文档在最好的时候是密集的,但上面的内容是不可渗透的!我只想在模型中设置一个布尔值,然后在一篇失败的文章后返回它。最终到达了那里,但很痛苦!