除了一个警告之外,我在MVC3应用程序中有一个正常工作的ajax表单.提交表单并获得结果后,即使传入的模型具有不同的输入值(下例中的金额),旧值仍会显示在屏幕上.我将此归因于DOM中保存的值并覆盖/阻止模型中的新值.有多种方法可以通过在其中一个表单事件上运行
javascript函数来解决此问题.
我想获得有关处理这种情况的最佳方法的反馈,最好是原生于MVC和没有javascript.以下是代码段:
父视图:
<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
解决方法
我一问这个问题就找到了答案!
ASP.NET MVC 3 Ajax.BeginForm and Html.TextBoxFor does not reflect changes done on the server
ASP.NET MVC 3 Ajax.BeginForm and Html.TextBoxFor does not reflect changes done on the server
你必须打电话
ModelState.Clear();
在返回局部视图之前的动作内部