Innerhalb dieser Anwendung, die ich gegeben habe mit, eine Teilansicht zu arbeiten 'MessageForm' hat eine einfache Form Ajax wie so:MVC - PartialView nicht aktualisiert, nachdem Ajax POST
@using (Ajax.BeginForm("", "", new AjaxOptions { HttpMethod = "POST" }, new { id = "addForm", enctype = "multipart/form-data" }))
{
@Html.LabelFor(model => model.Message) //displays "Hello"
}
Wenn die Form eingereicht wird die Change Funktion auf dem Controller genannt:
$('#addForm').submit(function() {
var formdata = new FormData(document.forms.namedItem("addForm"));
var xhr = new XMLHttpRequest();
xhr.open('POST', '@Url.Action("ChangeMessage")');
xhr.send(formdata);
return false;
});
Diese Change() -Methode einfach die Message-Eigenschaft im Modell ändert, und gibt das gleiche wieder Teilansicht:
[HttpPost]
[ValidateAntiForgeryToken]
public PartialViewResult ChangeMessage(MessageModel model)
{
model.Message = "Goodbye";
return PartialView("MessageForm", model);
}
Die Botschaft richtig zu „Goodbye“ im Modell aktualisiert wird (ich die Ansicht gedebuggt habe), aber es ist nicht in der Ausgabe angezeigt, zeigt die Ausgabe von HTML noch „Hallo“, wenn die Ansicht ist zurück gekommen. Die folgende Zeile in der Form ausgibt noch diese alte Nachricht:
@Html.LabelFor(model => model.Message) //correct when debugged as "Goodbye", but still displaying "Hello" in the browser
Es ist, als ob der Blick wieder gemacht wurde, aber ohne tatsächliche Leistung.
Sehr neu zu Ajax, also habe ich wahrscheinlich hier etwas falsch verstanden?
Sie müssen den HTML-Inhalt auf der Seite durch den Inhalt ersetzen, der vom Server zurückgegeben wird. Das passiert nicht magisch. –
Die Zeile @ Html.LabelFor (model => model.Message) wird erneut mit dem aktualisierten Wert ausgeführt. Offensichtlich ist mein Verständnis inkorrekt, aber das würde für Magie sorgen. – FBryant87
Sie müssen dem Ajax-Anruf mitteilen, was Sie bei Erfolg tun müssen. Sehen Sie sich diese Frage genauer an. http://stackoverflow.com/questions/8034530/asp-net-ajax-beginform-onsuccess-call-back-with-params – tcrite