代码之家  ›  专栏  ›  技术社区  ›  David

在调用特定控制器方法之前返回MVC ActionResult

  •  0
  • David  · 技术社区  · 16 年前

    我有一个基类控制器,我的其他控制器从中继承

    public abstract class BaseController : Controller
    {
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            ...
        }
    }
    

    在初始化过程中,我正在进行一些设置,在一些情况下,我希望缩短执行时间,直接跳转到ActionResult的返回,完全跳过实际操作方法的执行。类似这样的东西

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);
        if(specialCase)
        {
            ViewData[...] = specialCaseInformation;
            return View("~/Shared/SpecialCase.aspx");
        }   
    }
    

    认为 我需要做的是创建一个单独的ActionFilterAttribute类,重写OnActionExecuting方法,如果出现特殊情况,构造一个ViewResult对象并将其分配给filterContext.Result属性。

    我是朝着正确的方向走,还是应该以不同的方式去做?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Craig Stuntz    16 年前

    是的,ActionFilterAttribute正是正确的方法。以HandleErrorAttribute.cs为例。