我为我认为应该成为ASP.NET MVC核心功能的东西创建了自己的逻辑。我在这里发布它,希望有人会告诉我如何在没有自定义代码的情况下实现这一目标,或者如果MVC团队的某个人看到了它,然后意识到它的重要性并在未来的MVC版本中实现它。ASP.NET MVC - IDisposable模型
所以,模型并不总是EF对象,它们可以是别的东西,也可以包含其他资源。特别是如果你使用ViewModels概念,他们有模型信息+任何其他应该为视图服务的概念。
无论如何,我发现自己的模型是IDisposable,我需要一种方式来处置它们。
经过大量的试验后,我结束了以下属性,它配置了一个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);
}
}
会很高兴听到你的想法! :)
干杯。
当然内出售你的模型,我发现了艰辛的道路。这就是为什么我使用OnResultExecuted,在处理View之后触发AFAIK(操作方法完成后的方式)。 – justabuzz 2013-03-28 07:49:11