У меня есть веб-приложение ASP MVC.Мой пользовательский интерфейс не отражает изменения моей модели
У меня есть частичная форма, и она сначала отображает «Hello Andy!». Я нажимаю кнопку отправки, и я меняю это на «Hello Andy Again !. Я передаю модель обратно в интерфейс. На этикетке по-прежнему отображается старое значение.
Почему?
Моя разметка:
@using (Ajax.BeginForm("SaveAlertPreferences", "Users", new AjaxOptions
{
UpdateTargetId = "partialform",
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
{
<div>
@Html.AntiForgeryToken()
<div class="section group">
<div class="col span_3_of_12">
@Html.LabelFor(model => model.myStub)
</div>
<div class="col span_9_of_12">
@Html.TextBoxFor(model => model.myStub)
</div>
</div>
<div class="section group">
<div class="col span_3_of_12">
</div>
<div class="col span_4_of_12">
<input type="submit" value="Press me" />
</div>
<div class="col span_5_of_12">
</div>
</div>
</div>
}
Моя модель:
public class ChangeAlertPreferencesModel
{
public string myStub { get; set; }
}
Мой контроллер:
[AcceptVerbs("HEAD", "GET")]
public PartialViewResult _ChangeAlertPreferences()
{
Response.CacheControl = "no-cache";
ChangeAlertPreferencesModel m = new ChangeAlertPreferencesModel();
m.myStub = "Hello Andy!";
return PartialView("_ChangeAlertPreferences", m);
}
[HttpPost]
public PartialViewResult SaveAlertPreferences(ChangeAlertPreferencesModel m)
{
Response.CacheControl = "no-cache";
if (ModelState.IsValid)
{
m.myStub = "Hello Andy Again!";
return PartialView("_ChangeAlertPreferences", m);
}
else
{
m.myStub = "I have errored!";
return PartialView("_ChangeAlertPreferences", m);
}
return null;
}
1st: является 'partialform' идентификатором родительского' div 'метки? 2nd: ajax form и другие функции ajax «missbehave», если вы не используете jquery-ajax-unobtrusive.js в своем проекте, поэтому убедитесь, что вы это получили. Вы можете скачать его через NuGet. – Spluf
@Spluf Привет, спасибо за ваше время. Да partialform - это идентификатор родителя формы. Я взгляну на эту структуру - спасибо –
@CodeCaster спасибо. Будет выглядеть –