MVC アクションへの jQuery ポスト リクエストの後にデータを受信する際に問題が発生しました。私は標準的なシナリオを持っています。ユーザーからいくつかの情報を収集し、それをアクションに送信して、このデータをデータソースに追加し、新しいエントリの ID を UI に返してさらに使用する必要があります。
jQuery
$('#somediv').on('click', '.Save', function () {
var data = $(this).closest('form').serialize();
$.post('/home/add', data, function (data) {
$('#div-container').html(data);
});
});
MVC アクション
[HttpPost]
public ActionResult Add(Data data)
{
Data addedData = logic.Add(data);
ViewData.Model = addedData;
return PartialView("PatrialView");
}
部分図
@model MyClass.Data
@using (Html.BeginForm())
{
<div id="div-container">
@Html.HiddenFor(model => Model.Id)
@Html.TextBoxFor(model => Model.Name)
</div>
<input type="button" class="btn Save" value="Save" />
</div>
</li>
}
また、ホームコントローラーには、キャッシュを無効にするフィルターがあります。
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
正しいデータが実行に移されます。ViewData.Model には、部分ビューが呼び出される前の正しい ID が含まれています。また、ビューを介してデバッグし、データはコントロールに正しく設定されていますが、応答本文 (IE Dev Tool で確認) は id = 0 です。コードの何が問題なのか教えてください。