1

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

自己的依赖
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中,但这并不合适。建议?

回答

2

创建子控制器操作,将缓存中的数据放入视图模型中,并使用Html.Action()呈现局部视图。

+0

这几乎是我最终做的,似乎工作正常。你能解释控制器和子控制器之间的区别吗?除了您可以将[ChildActionOnly]放在您的动作上以外,我没有看到任何区别 – kenwarner 2011-05-26 22:47:03

+0

没有区别,您可以将任何控制器上的子动作。我通常为我在主/布局页面中使用的子操作创建一个MasterController。 – Necros 2011-05-27 00:47:06