基本的に、ドロップダウンリストから値を取得し、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()を呼び出すことはできません。