我正在使用ASP.NET MVC3中的Ajax.BeginForm帮助程序来提交一个表单,该表单将自己替换为服务器上设置的表单中的新值。但是,当我使用诸如Html.TextBoxFor之类的助手时,我得到的是提交的值,而不是我插入服务器模型中的值。
例如; 我在操作中将SomeValue设置为4,并在文本框中显示它。我将值更改为8,然后单击“提交”,并希望在文本框中将其更改回4,但是由于某种原因,它仍保持为8。但是,如果我不使用Html帮助程序而输出SomeValue,则会显示4。到底是怎么回事?
我的控制器:
public ActionResult Index(HomeModel model) { model.SomeValue = 4; if (Request.IsAjaxRequest()) return PartialView(model); return View(model); } public class HomeModel { public int? SomeValue { get; set; } }
我的视图(请不要在布局页面中包含所有需要的JavaScript):
<div id="ajaxtest"> @using(Ajax.BeginForm(new AjaxOptions{ InsertionMode = InsertionMode.Replace, UpdateTargetId = "ajaxtest", HttpMethod = "Post" })) { @Html.TextBoxFor(model => model.SomeValue) <input type="submit" value="Update" /> } </div>
您可以使用
ModelState.Clear()
在您的控制器方法中,以使html助手使用您更改的模型。否则,他们使用表单提交中的值
看看:Asp.net MVC ModelState.Clear