当前位置 : 主页 > 网络编程 > ASP >

asp.net-mvc-2 – 如何使用控制器的模型提供ASP.NET MVC2母版页

来源:互联网 收集:自由互联 发布时间:2021-06-24
我在ASP.NET MVC2下使用强类型视图和autofac进行依赖注入,我试图通过依赖注入获得一个通用的动态头.即我希望这发生在没有视图必须离开这个内容甚至现有,我希望避免静态发现容器和手动
我在ASP.NET MVC2下使用强类型视图和autofac进行依赖注入,我试图通过依赖注入获得一个通用的动态头.即我希望这发生在没有视图必须离开这个内容甚至现有,我希望避免静态发现容器和手动分辨率,但我找不到一种方法来轻松注入主或部分视图包括在主人通过ctor或财产注入.

我无法想象这是一个不常见的任务,但是我可以在方法方面找到的是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>
网友评论