ASP.NET MVC依赖注入部分视图数据

时间:2011-05-26 22:01:51

标签: asp.net-mvc-3 dependency-injection viewmodel ninject partial-views

我想通过ASP.NET MVC _Layout.cshtml页面中的部分视图_CacheData.cshtml显示来自HttpContext.Current.Cache的一些数据。我写了一个包装器ICacheManager,所以我可以将它注入我的控制器。 ICacheManager也有自己对IFooRepository的依赖

public class CacheManager : ICacheManager
{
    public CacheManager(IFooRepository repo, System.Web.Caching.Cache cache)
    { ... }
}

我正在使用Ninject.MVC3 nuget包,所以这里是我的RegisterServices

private static void(IKernel kernel)
{
    kernel.Bind<IFooRepository>().To<FooRepository>();
    kernel.Bind<ICacheManager>().To<CacheManager>().WithConstructorArgument("cache", x => HttpContext.Current.Cache);
}

这适用于我的控制器,但是如何将CacheManager注入局部视图? _CacheData.cshtml没有控制器。我可以在基本控制器中获得CacheManager并将其放入ViewBag中,但这感觉不对。建议?

1 个答案:

答案 0 :(得分:2)

创建子控制器操作,您可以将缓存中的数据放入视图模型中,并使用Html.Action()渲染部分视图。