【发布时间】:2010-10-11 08:54:30
【问题描述】:
我有一个基本控制器类,我的其他控制器都从该类继承
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 方法,如果出现特殊情况,构造一个 ViewResult 对象并将其分配给 filterContext.Result 属性。
我是朝着正确的方向前进,还是应该采取不同的方式?
【问题讨论】:
标签: asp.net-mvc