基本上我从下拉列表中获取一个值并通过 AJAX 将其传递给客户端方法。基于这个值,我得到数据,我想把它放到一个文本框中。
<script type="text/javascript">
$('#dropdownlist').change(function () {
$.post('/Index/GetJSON/' + this.value, null,
function (data) {
$('#somefield').val(data)
});
});
</script>
所以这个方法被调用:
[HttpPost]
public JsonResult GetJSON(int ID)
{
return Json(data);
}
标记
@Html.EditorFor(m => m.somefield)
somefield 确实在视觉上改变了它的价值。但是当我检查它的价值时它没有得到更新。好像 val(data.ID) 没有注册到模型。由于我的代码,我也不能调用 ModelState.Clear() ......
我使用这种方法而不是 Ajax.Form 和部分视图的原因是因为我在 HTML.BeginForm (已提交)中拥有所有标记,其中许多不同的下拉列表通过 AJAX 通过文本框进行交互,并且您不能嵌套 Ajax.Form与 HTML.BeginForm。因此我无法通过 Ajax.Form 提交对模型的更改并调用 ModelState.Clear()。