我在ASP.NET MVC2下使用强类型视图和autofac进行依赖注入,我试图通过依赖注入获得一个通用的动态头.即我希望这发生在没有视图必须离开这个内容甚至现有,我希望避免静态发现容器和手动
我无法想象这是一个不常见的任务,但是我可以在方法方面找到的是Controller子类化将数据填充到无类型的ViewData,继承ViewModels以将主数据填充到模型中,或静态分辨率,所有这些我都是不想使用.我在俯瞰什么?
编辑:正如已经指出DI进入母版页正在与框架作斗争.所以我的问题很糟糕:我并不真正关心DI进入母版页,但我在网站的chrome中有一个动态元素,即母版页.为其提供模型不应该是使用该主服务器的每个控制器的责任,因为它是请求上下文,而不是控制器上下文特定的.我完全承认直接注入母版页是不合适的.如果我可以另外注册一个单独的主控制器,那就更好了.那可能吗?鉴于为主设备提供独立于控制器的模型的任务,框架适当的方法是什么?或者MVC中的共享内容是否要求每个Controller必须知道该内容?
你可以使用 child actions.控制器:
public class MyHeaderController: Controller { private readony IRepository _repository; public MyHeaderController(IRepository repository) { _repository = repository; } [ChildActionOnly] public ActionResult Index() { var model = _repository.GetSomeModel(); return PartialView(model); } }
在您的母版页的某个地方包含它:
<div><%= Html.Action("Index", "MyHeader") %></div>