【问题标题】:Returning an MVC ActionResult before the specific controller method is called在调用特定控制器方法之前返回 MVC ActionResult
【发布时间】: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


    【解决方案1】:

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

    正如你所说,初始化不是正确的方法。

    【讨论】:

      猜你喜欢
      • 2010-11-04
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2014-12-09
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多