加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:20:55 所属栏目:asp.Net 来源:网络整理
导读:我在ASP.NET MVC2下使用强类型视图和autofac进行依赖注入,我试图通过依赖注入获得一个通用的动态头.即我希望这发生在没有视图必须离开这个内容甚至现有,我希望避免静态发现容器和手动分辨率,但我找不到一种方法来轻松注入主或部分视图包括在主人通过ctor或财
我在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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读