我有一个编辑演出的表格。
初始控制器操作称为“编辑”。
表单发布到称为“更新”的第二个控制器操作
因此,一旦表单发布,我使用定制的 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);
}
但是,我没有收到验证消息