5

我想做这样的事情:

[HttpPost]
public ActionResult Index(Foo foo)
{
    foo.Name = "modified";

    return View(foo);
}

但是当我的视图被渲染时,它总是具有旧值!如何修改和返回?我必须每次都清除 ModelState 吗?


我的观点:

@model MvcApplication1.Models.Foo


@using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.Name)
    @Html.TextBoxFor(m => m.Description)

    <input type="submit" value="Send" />
}
4

2 回答 2

4

我认为这可能是预期的行为,因为将相同模型发送回视图的“正常”场景是模型出现错误时。

请参阅:http: //blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

于 2012-06-06T19:35:09.663 回答
1

MVC 在回发时使用 ModelState 来填充视图,而不是传递的模型。要在返回视图之前更新单个字段,请尝试以下操作:

var newVal = new ValueProviderResult("updated value", "updated value", CultureInfo.InvariantCulture);
ModelState.SetModelValue("MyFieldName", newVal);

更多信息:ModelStateDictionary.SetModelValue()

于 2019-08-15T23:31:09.427 回答