.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 表单保留旧的输入值 - 如何更新到模型的值?的主要内容,如果未能解决你的问题,请参考以下文章
带有 jQuery 验证的 ASP.Net MVC Ajax 表单
asp.net core mvc 异步表单(Ajax.BeginForm)
Asp.net Mvc Ajax.BeginForm提交表单