2

我为我认为应该是 ASP.NET MVC 的核心功能的东西创建了自己的逻辑。我在这里发布它是希望有人会告诉我如何在没有自定义代码的情况下实现这一点,或者如果 MVC 团队的某个人看到它,然后意识到它的重要性并在未来的 MVC 版本中实现它。

因此,模型并不总是 EF 对象,它们可以是其他东西,并且可能包含其他资源。特别是如果您使用 ViewModels 概念,他们拥有模型信息 + 应该为视图服务的任何其他内容。

无论如何,我发现自己拥有 IDisposable 的模型,我需要一种方法来处理它们。

经过大量试验后,我最终得到了以下属性,它配置了一个 IDisposable 模型。它装饰了我的基本 Controller 类,因此适用于任何已执行的操作:

internal class ModelDisposerAttribute : ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
            var model = filterContext.Controller.ViewData.Model as IDisposable;
            if (model != null)
                    model.Dispose();

            base.OnResultExecuted(filterContext);
    }
}

很高兴听到你的想法!:)

干杯。

4

1 回答 1

0

框架在返回 ActionResult 后肯定会访问模型。ActionResults 调用它们的 Execute() 方法来生成内容。

如果您需要处理控制器中的任何内容,您可以覆盖 Controller.Dispose()。您可以从该方法中处理您的模型

在 asp.net mvc 中,拥有 IDisposable 模型是否安全?

于 2013-03-28T07:11:05.283 回答