Ich habe das folgende Problem beim Aktualisieren eines Formulars über AJAX, nachdem es eingereicht wurde. Aus irgendeinem Grund werden einige versteckte Felder, die im zurückgegebenen HTML vorhanden sind, nicht aktualisiert, was seltsam ist, denn wenn ich den Debugger ausführe, scheinen sie den richtigen Wert zu haben.
Das ist der relevante Teil meines Formulars
@{Html.EnableClientValidation();}
@Html.ValidationSummary()
@{ Html.RenderPartial("ItemData", Model, new ViewDataDictionary() { { "Machines", ViewBag.Machines }, { "WarehouseList", ViewBag.WarehouseList }, { WebConstants.FORM_ID_KEY, @ViewData[WebConstants.FORM_ID_KEY] } }); }
Dann enthält die Partial View versteckte Felder wie diese, die nicht aktualisiert werden
@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) //Die ItemID muss aktualisiert werden, wenn ein Artikel kopiert wird
@Html.HiddenFor(model => model.Item.Delivery.DeliveryAddressID, new { @id = "delAddressID" })
Und das ist die JavaScript-Methode, die das Formular aktualisiert
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("Der Artikel wurde erfolgreich gespeichert");
},
error: function () { popup('ajaxSplash'); onFailure(); }
});
}
Die Aktion Index gibt die Partial View "ItemData" zurück, und wenn ich das Item Model überprüfe, hat es den richtigen Wert, aber wenn ich das zurückgegebene HTML überprüfe, ist es immer noch auf 0 gesetzt.