【问题标题】:ASP.NET MVC dependency injectable partial view dataASP.NET MVC 依赖注入部分视图数据
【发布时间】:2011-05-26 22:01:50
【问题描述】:

我想在我的 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,但这感觉不对。有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这几乎就是我最终所做的,似乎工作正常。你能解释一下控制器和子控制器之间的区别吗?除了您可以将 [ChildActionOnly] 放在您的操作上之外,我看不出有什么不同
    • 没有区别,您可以将子操作放在任何控制器上。我通常为我在主/布局页面中使用的子操作创建一个 MasterController。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多