我有一个基本控制器类,我的其他控制器是从中继承的
public abstract class BaseController : Controller
{
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
...
}
}
在初始化期间我正在进行一些设置,并且在一些情况下我想要将执行短路,直接跳转到ActionResult的返回,完全跳过实际Action方法的执行。沿着这些方向的东西
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
if(specialCase)
{
ViewData[...] = specialCaseInformation;
return View("~/Shared/SpecialCase.aspx");
}
}
目的是跳过将要调用的任何ActionResult方法,并将其替换为我的全局特殊案例页面。但我认为Initialize不是为了这个。
我认为我需要做的是创建一个单独的ActionFilterAttribute类,重写OnActionExecuting方法,如果出现了specialCase,则构造一个ViewResult对象并将其分配给filterContext.Result属性。
我是否朝着正确的方向前进,或者我应该以不同的方式做这件事吗?
答案 0 :(得分:0)
是的,ActionFilterAttribute是正确的方法。查看HandleErrorAttribute.cs以获取示例。
正如你所说,初始化不是正确的方法。