我使用ASP.NET MVC 5框架编写了一个应用程序。我在视图和ViewModel之间使用双向绑定。
由于我使用双向绑定,因此我获得了客户端和服务器端验证的好处,这很酷。但是,当我向服务器发送POST
请求,并且请求处理程序抛出异常时,我想将用户重定向到GET
方法。
当重定向发生时,我想保存模型状态,以便在显示错误时页面看起来相同。我可以使用ActionFilters
和TempData
via this approach保存状态模型和错误。但是,当请求被重定向时,从POST
到GET
,模型状态将保存为System.Web.Mvc.ModelStateDictionary
对象,这是一个键/值对,其中包含来自{{{}的所有用户输入1}}请求。
为了正确地向最终用户呈现页面,我需要将POST
中的数据绑定到我自己的演示模型。
如何将System.Web.Mvc.ModelStateDictionary
对象绑定到我的演示文稿对象?
以下是我的代码的样子
System.Web.Mvc.ModelStateDictionary
答案 0 :(得分:4)
如果出现错误,请不要重定向,只需返回视图。
[HttpPost]
[ValidateAntiForgeryToken]
[ExportModelStateToTempData]
public ActionResult Update(int id, DetailsPresenter model)
{
try
{
if (ModelState.IsValid)
{
var updater = new UpdateAddressServiceProvider(CurrentUser);
updater.Handle(model.General);
}
return new RedirectResult(Url.Action("Show", new { Id = id }) + "#General");
}
catch (Exception exception)
{
ModelState.AddModelError("error", exception.Message);
// Return the named view directly, and pass in the model as it stands.
return View("Show", model);
}
}