我有一个ActionFilter,用于检查URL中的参数是否有效。 如果它无效,我必须渲染一个视图。我不想重定向,因为我仍然需要ActionExecutingContext。 可以这样做吗?
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Guid processIdentifier = (Guid)filterContext.RouteData.Values["processIdentifier"];
//if processIdentifier not found render a view with message and some other objects in ViewData
filterContext.Controller.ViewData.ModelState.AddModelError("WrongProcessIdentifier", "The process-id you supplied is not valid");
base.OnActionExecuting(filterContext);
}
答案 0 :(得分:37)
HandleErrorAttribute
得到了我想要的东西。
filterContext.Result = new ViewResult
{
ViewName = "MessagePage",
ViewData = filterContext.Controller.ViewData,
TempData = filterContext.Controller.TempData
};
答案 1 :(得分:1)
是。查看HandleErrorAttribute的源代码。
答案 2 :(得分:0)
试试这个
[HandleError]
public ActionResult MyAction (int id)
{
// ...
}
将要渲染的视图放入~/Views/Shared/Error.ascx
。