Asp.net mvc ASP.NET MVC-IDisposable模型

Asp.net mvc ASP.NET MVC-IDisposable模型,asp.net-mvc,Asp.net Mvc,我为一些我认为应该成为ASP.NETMVC核心特性的东西创建了自己的逻辑。我在这里发布它是希望有人能告诉我如何在没有自定义代码的情况下实现这一点,或者如果MVC团队的人看到了它,然后意识到它的重要性,并在未来的MVC版本中实现这一点 因此,模型并不总是EF对象,它们可以是其他对象,也可能包含其他资源。特别是如果您使用ViewModels概念,其中包含模型信息+任何其他应服务于视图的内容 无论如何,我发现自己的模型是可识别的,我需要一种方法来处理它们 经过大量的试验,我最终得到了以下属性,它处理了

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

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

无论如何,我发现自己的模型是可识别的,我需要一种方法来处理它们

经过大量的试验,我最终得到了以下属性,它处理了一个IDisposable模型。它装饰了我的基本控制器类,因此可以处理任何执行的操作:

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);
    }
}
很高兴听到你的想法!:)

干杯

框架在返回 行动结果。ActionResults的Execute()方法在 以生成内容

如果需要处置控制器中的任何东西,可以 重写控制器.Dispose()。您可以从中处置模型 在该方法范围内


当然,我发现这是一条艰难的道路。这就是我使用OnResultExecuted的原因,它是在处理视图之后(操作方法完成之后)触发的。