我们有一个带有操作方法索引
的控制器SomeControllerpublic ActionResult Index()
{
return View(new SomeModel());
}
在视图中,编辑EditorFor:
@Html.EditorFor(x => x.Submodel)
Submodel包含Ajax.BeginForm中SomeProperty的文本字段:
@Html.TextBoxFor(x => x.SomeProperty)
渲染时,SomeProperty的值为' x'并且它改为' y。我可以在调试器中看到正确的值' y'确实已发布,但控制器收到旧值'。'。
模型发布到的控制器操作是
public ActionResult Update(Submodel model)
匹配编辑器模板收到的模型。
如果我将“索引”视图更改为RenderPartial而不是编辑器,则为正确的新值' y'发布:
@Html.RenderPartial("/PathToControllerViews/EditorTemplates/Submodel.cshtml", Model.Submodel)
我搜索了一下,我在类似场景中找到的唯一一件事是在返回局部视图之前清除ModelState的建议,但是有潜在的缺点并且它似乎没有解决根本原因。 / p>
这是一个如此简单的结构,为什么会发生这种情况呢?为什么它适用于RenderPartial而不适用于EditorFor?