У меня есть форма для редактирования концертов.
Начальное действие контроллера называется «Редактировать».
Форма отправляет сообщение на второе действие контроллера, называемое «Обновление»
Итак, после публикации формы я использую сделанный на заказ ModelBinder, который использует bindingContext.ModelState.AddModelError, чтобы добавить сообщения проверки в состояние модели
Действие Обновить copntroller выглядит так:
[AcceptVerbs("POST")]
public ActionResult Update(Guid id, FormCollection formCollection)
{
Gig gig = GigManager.GetByID(id);
try
{
UpdateModel<Gig>(gig);
GigManager.Save(gig);
return RedirectToAction("List");
}
catch (Exception e)
{
return View(gig);
}
}
Если в связывателе модели возникнут ошибки, при обновлении модели будет выдано исключение.
Это означает, что RedirectToAction («Edit») вызывается, так что вызывается оригинальное действие «Edit» контроллера.
Это означает, что я не вижу своих сообщений проверки, и любые данные, добавленные пользователем в форму, будут сброшены до исходных значений!
Как мне приблизиться к этому?
Я включил действие «редактировать» ниже:
[AcceptVerbs("GET")]
public ActionResult Edit(Guid id)
{
Gig gig = GigManager.GetByID(id);
SelectList days = CreateDays(1, 31, 1, gig.StartDate.Day);
ViewData["day"] = days;
SelectList months = CreateMonths(1, 12, 1, gig.StartDate.Month);
ViewData["month"] = months;
SelectList years = CreateYears(DateTime.Now.Year, DateTime.Now.Year + 10, 1, gig.StartDate.Year);
ViewData["year"] = years;
string bandNames ="";
string bandIds = "";
foreach(Act act in gig.Acts)
{
bandNames += act.Name.Trim() + ", ";
if (act.Artist != null)
{
bandIds += act.Artist.ID + ";";
}
}
ViewData["Bands"] = bandNames;
ViewData["BandIds"] = bandIds;
return View(gig);
}
Однако я не получаю сообщения проверки