0

基本上我从下拉列表中获取一个值并通过 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()。

4

1 回答 1

1

.val()如果您希望更改反映在元素 value attr use 中,请设置元素的 value 属性.attr()

$('#somefield').attr('value', data)
于 2013-01-05T20:02:06.243 回答