.NET MVC Ajax Form保留旧的输入值 - 如何更新模型的值?

Ale*_*lex 7 ajax asp.net-mvc jquery razor asp.net-mvc-3

除了一个警告之外,我在MVC3应用程序中有一个正常工作的ajax表单.提交表单并获得结果后,即使传入的模型具有不同的输入值(下例中的金额),旧值仍会显示在屏幕上.我将此归因于DOM中保存的值并覆盖/阻止模型中的新值.有多种方法可以通过在其中一个表单事件上运行javascript函数来解决此问题.

我希望获得有关处理这种情况的最佳方法的反馈,最好是原生于MVC而不使用javascript.以下是代码段:

父视图:

<div id="MyContainder">
    @Html.Partial("MyPartialView", ClassContainingAmountProperty)
</div>
Run Code Online (Sandbox Code Playgroud)

局部视图:

@using (Ajax.BeginForm(actionName: "myaction",
              ajaxOptions: new AjaxOptions() UpdateTargetId = "MyContainder"})
      @Html.EditorFor(x => x.Amount)
      <input type="submit" value="Save" />
)
Run Code Online (Sandbox Code Playgroud)

调节器

myModel.Amount = SomeNewNumber;
return PartialView(myModel); //same partial view returned but with new amount
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 22

我一问这个问题就找到了答案! ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服务器上完成的更改

你必须打电话

ModelState.Clear();
Run Code Online (Sandbox Code Playgroud)

在返回局部视图之前的动作内部

  • 你不必如此核,如果你只是设置`myModel.Amount`你可以做`ModelState.Remove("Amount")` (8认同)

小智 5

试着投入

ModelState.Clear();
Run Code Online (Sandbox Code Playgroud)