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

Posted

技术标签:

【中文标题】.NET MVC Ajax 表单保留旧的输入值 - 如何更新到模型的值?【英文标题】:.NET MVC Ajax Form keeps old input values - how to update to the model's value? 【发布时间】:2012-03-20 08:21:22 【问题描述】:

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

我想获得有关处理这种情况的最佳方法的反馈,最好是 MVC 原生且不使用 javascript。这是sn-ps的代码:

父视图:

<div id="MyContainder">
    @html.Partial("MyPartialView", ClassContainingAmountProperty)
</div>

局部视图:

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

控制器

myModel.Amount = SomeNewNumber;
return PartialView(myModel); //same partial view returned but with new amount

【问题讨论】:

【参考方案1】:

我一问问题就找到了答案! ASP.NET MVC 3 Ajax.BeginForm and Html.TextBoxFor does not reflect changes done on the server

你必须打电话

ModelState.Clear();

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

【讨论】:

你不必这么核,如果你只是设置myModel.Amount你可以做ModelState.Remove("Amount")【参考方案2】:

试试看

ModelState.Clear();

【讨论】:

以上是关于.NET MVC Ajax 表单保留旧的输入值 - 如何更新到模型的值?的主要内容,如果未能解决你的问题,请参考以下文章

带有 jQ​​uery 验证的 ASP.Net MVC Ajax 表单

asp.net mvc 3 - ajax 表单提交和验证

asp.net core mvc 异步表单(Ajax.BeginForm)

Asp.net Mvc Ajax.BeginForm提交表单

如何在 ASP.NET MVC 中通过 Ajax 提交表单?

如何使用 JavaScript 而不是提交按钮发布 ASP.NET MVC Ajax 表单