В рамках этого приложения я был дан, чтобы работать с, частичным видом «MessageForm» имеет простой Ajax форма, как так:MVC - PartialView не обновляется после Ajax POST
@using (Ajax.BeginForm("", "", new AjaxOptions { HttpMethod = "POST" }, new { id = "addForm", enctype = "multipart/form-data" }))
{
@Html.LabelFor(model => model.Message) //displays "Hello"
}
Когда форма представлено, функции ChangeMessage на контроллере называется:
$('#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;
});
Это ChangeMessage() метод просто изменяет свойство Message в модели, и снова возвращает тот же частичный вид:
[HttpPost]
[ValidateAntiForgeryToken]
public PartialViewResult ChangeMessage(MessageModel model)
{
model.Message = "Goodbye";
return PartialView("MessageForm", model);
}
сообщение обновляется до «Goodbye» в модели правильно (я отлажена мнение), но это не отображается на выходе, вывод HTML все еще показывает «Привет», когда вид возвращается. Следующая строка в виде по-прежнему выводит это старое сообщение:
@Html.LabelFor(model => model.Message) //correct when debugged as "Goodbye", but still displaying "Hello" in the browser
Это как если бы мнение было вынесено еще раз, но без фактического выпуска продукции.
Очень новый для Ajax, так что, скорее всего, я что-то не понял?
Вам необходимо заменить содержимое HTML на странице тем, что возвращается с сервера. Это не происходит волшебным образом. –
Строка @ Html.LabelFor (model => model.Message) снова выполняется с обновленным значением. Очевидно, что мое понимание неверно, но это послужило бы для магии. – FBryant87
Вы должны сказать ajax, что делать с успехом. Проверьте этот вопрос для более подробной информации. http://stackoverflow.com/questions/8034530/asp-net-ajax-beginform-onsuccess-call-back-with-params – tcrite