【问题标题】:MVC actual controller vs filterContext.ControllerMVC 实际控制器 vs filterContext.Controller
【发布时间】:2012-03-22 12:18:14
【问题描述】:

我有抽象的 BaseController,基本上如下所示:

public abstract class BaseController : Controller
{
    public IDisposable Resource { get; protected set; }      

    protected override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        if(Resource != null)
        {
            Resource.Dispose();
        }

        var baseController = filterContext.Controller as BaseController;
        if (baseController != null && baseController.Resource != null)
        {
            baseController.Resource.Dispose();
        }
    }
}

在 OnActionExecuted 事件中,我想处置 Resource 对象。对 Resource 执行 Dispose 就足够了吗?我是否还必须从 filterContext 检查控制器中的资源?

在我的调试器中,这是同一个对象,但它总是同一个吗?它是干什么用的?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    这是同一个对象。 Controller 属性在动作过滤器中很有用——它们还在OnActionExecuted 中获得一个ActionExecutedContext——而你不在那里的控制器中。

    【讨论】:

      【解决方案2】:

      如果它仍然相同,您的控制器将为每个请求构建 (ASP.NET MVC Controller Lifecycle)。然后你可以在你的控制器中处理你的资源(ASP MVC: When is IController Dispose() called?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-22
        • 2010-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-30
        相关资源
        最近更新 更多