送信後に AJAX 経由で for を更新すると、次の問題が発生します。何らかの理由で、返された HTML にある一部の非表示フィールドが更新されていません。これは、デバッガーを実行すると正しい値を持っているように見えるため、奇妙です。
これは私のフォームの関連部分です
<div id="itemPopUpForm">
@{Html.EnableClientValidation();}
@Html.ValidationSummary()
<div id="formDiv">
@{ Html.RenderPartial("ItemData", Model, new ViewDataDictionary() { { "Machines", ViewBag.Machines }, { "WarehouseList", ViewBag.WarehouseList }, { WebConstants.FORM_ID_KEY, @ViewData[WebConstants.FORM_ID_KEY] } }); }
</div>
</div>
次に、部分ビューには、更新されていないこれらのような非表示のフィールドが含まれています
@using (Html.BeginForm("Index", "Item", FormMethod.Post, new { id = "frmItem", name = "frmItem" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.Item.SodID)
@Html.HiddenFor(model => Model.Item.ItemID) //The itemID needs updating when an item is copied
@Html.HiddenFor(model => model.Item.Delivery.DeliveryAddressID, new { @id = "delAddressID" })
そして、これはフォームを更新するJavaScriptメソッドです
function ajaxSave() {
if (!itemValid()) return;
popup('ajaxSplash');
$.ajax({
type: "POST",
url: '@Url.Action("Index")',
data: $("#frmItem").serialize(),
success: function (html) {
console.log(html);
$("#formDiv").html(html);
initItemPage();
alert("Item was saved successfully");
},
error: function () { popup('ajaxSplash'); onFailure(); }
});
}
アクション インデックスは部分ビュー「ItemData」を返し、アイテム モデルを確認すると正しい値が返されますが、返された html を見るとまだ 0 に設定されています。