【发布时间】:2016-06-29 03:22:22
【问题描述】:
我有一个删除对象的方法。删除不属于自己的视图,是“EditReport”中的“Delete”按钮。成功移除“报告”上的重定向后。
[HttpPost]
[Route("{reportId:int}")]
[ValidateAntiForgeryToken]
public IActionResult DeleteReport(int reportId)
{
var success = _reportService.DeleteReportControl(reportId);
if (success == false)
{
ModelState.AddModelError("Error", "Messages");
return RedirectToAction("EditReport");
}
ModelState.AddModelError("OK", "Messages");
return RedirectToAction("Report");
}
在 ASP.NET MVC 5 中,我使用以下属性在方法之间保存 ModelState。我从这里拿的:https://stackoverflow.com/a/12024227/3878213
public class SetTempDataModelStateAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
filterContext.Controller.TempData["ModelState"] =
filterContext.Controller.ViewData.ModelState;
}
}
public class RestoreModelStateFromTempDataAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (filterContext.Controller.TempData.ContainsKey("ModelState"))
{
filterContext.Controller.ViewData.ModelState.Merge(
(ModelStateDictionary)filterContext.Controller.TempData["ModelState"]);
}
}
}
但在 ASP.NET MVC 6 RC 1 (ASP.NET Core 1.0) 中,此代码不起作用。
filterContext.Controller 中的错误不包含 TempData 和 ViewData 的定义。
【问题讨论】:
标签: c# asp.net-mvc asp.net-core asp.net-core-mvc asp.net-core-1.0