我想在控制器中设置以下服务:

    private IAccountService _accountService;
    private IDataSourceService _dataSourceService;
    private IProductService _productService;
    private ISequenceService _sequenceService;

    protected override void Initialize(RequestContext requestContext)
    {
        base.Initialize(requestContext);
    }

但是设置这些需要我知道来自视图的模型中属性的值并指定dataSourceID。

在控制器的Initialize方法中,型号信息可用吗? 如果答案是否定的,会话变量是否可供我检查?

===============>>#1 票数:0

不要破解MVC框架的内部工作原理。 在我看来,您实际上想做的是控制反转或依赖注入。 它在MVC中得到很好的支持,您只需要使控制器的构造函数接受这些服务(作为接口)并设置IoC容器即可(MVC3具有与所有主要IoC容器兼容的内置DependencyResolver-我个人很喜欢Ninject)。 有很多关于此的教程,例如,可以通过nuget完全自动设置Ninject。

===============>>#2 票数:0 已采纳

我不确定您为什么要这么做。 控制器不应负责配置其依赖项。 您应该使用“控制反转”(也称为“依赖项注入”)容器将所有依赖项注入到构造函数中。

如果您的服务需要有关构造的模型特定信息,我强烈建议您检查您的体系结构,因为实际情况并非如此。 最有可能的是,最好在方法调用中传递该信息(方法注入),或者将依赖关系抽象到服务中。

如果您需要存储在会话中的信息,则还可以考虑将会话包装在服务中。 然后,您可以将会话服务作为依赖项注入。 这也将使对控制器进行单元测试变得更加容易。

  ask by Samantha J T Star translate from so

未解决问题?本站智能推荐:

1回复

使用视图模型的MVC控制器操作的依赖注入

继这个问题之后 MVC3 - 我应该将我的模型设计为与我的视图紧密耦合吗? 关于如何建议为视图使用视图模型并让Controller填充视图模型,我一直在尝试使用Ninject.MVC并使用一些示例来为存储库模式注入控制器所需的存储库。 像这样 然后我使用MVC Scaf
3回复

MVC中的IoC:如何处理从控制器到模型的服务对象流?

我正在使用MVC3,并已实现IoC,以通过构造函数参数向控制器提供服务/管理器对象。 这些反过来可能会传递给模型。 我遇到的问题是,到处传递这些对象会很麻烦。 例: 购物车模型可能具有必须向其传递参数的子模型。 如您所见,这一切都变得非常麻烦。 如果您有太多构造函数参数
1回复

如何使用StructureMap将存储库类注入控制器?

在当前应用程序中,我正在使用一个自定义ControllerFactory类,该类创建一个控制器并自动设置Elmah ErrorHandler。 我想使用StructureMap在我的控制器中注入一些代码。 例如,我想在其中自动注入存储库类。 我已经创建了我的存储库类,并且还向接收
2回复

在控制器中实现依赖注入以创建松耦合系统

我有一个HomeController和一个类型类的Referrence.If我创建该类的新对象,它对我来说很好。 但是我不想在Controller中创建新对象,而是想通过HomwController的Constructor传递类的引用。这是我的代码。 我需要在这里实施DI。 有什么帮
2回复

使用控制器依赖注入的具有多个存储库的主从视图

我正在尝试使用Ninject将存储库注入到我的MVC项目的控制器中。 这一切都说得通并且很容易,但是当视图变得更加复杂并且需要显示主要细节方案时,我是否要同时注入两个存储库接口? 如果深度达到4或5级,这种变化会改变吗? (例如,用户选择客户,项目,组,部门,然后获得人员列表)
1回复

ASP.net MVC依赖注入与unity(DI容器); 如何根据不同的控制器类型注入依赖项别名(特定类型)

我想根据控制器类型使用Unity或任何其他DI容器注入特定的依赖项。 下面是一个示例: 2个依赖项的类型为接口IAppLogger : 现在,下面的2个控制器使用抽象IAppLogger消耗依赖项。 在我的MVC项目中,我已经安装了Unity和Unity.mvc3软件
1回复

如何在模型创建期间覆盖ASP.NET MVC 3默认模型绑定器以解析依赖关系(使用ninject)?

我有一个ASP.NET MVC 3应用程序,它使用Ninject来解决依赖关系。 到目前为止,我必须做的就是使Global文件继承自NinjectHttpApplication ,然后重写CreateKernel方法以映射我的依赖项绑定。 之后,我能够在我的MVC控制器构造函数中包含接口依赖
3回复

将依赖项注入ASP.NET MVC 3动作过滤器。这种方法有什么问题?

这是设置。 假设我有一些需要服务实例的动作过滤器: 然后我有一个需要该服务实例的ActionFilter: 在MVC 1/2中,将依赖关系注入动作过滤器是一个痛苦的屁股。 最常见的方法是使用自定义动作调用程序,如下所示: http : //www.jeremyskinner.
1回复

Unity.mvc3-由HierarchicalLifetimeManager管理的一次性类未调用Dispose方法

下面是我的代码,问题是我的UnitOfWork类的dispose方法没有被调用。 对于DI,我在Asp.net MVC3应用程序中将Unity v2.1.505与Unity.Mvc3 v1.2一起使用 我是DI和Unity的新手,谢谢。
1回复

如何正确地将结构图依赖关系解析器与ASP.NET MVC Web项目分离?

在使用ASP.NET MVC开发Web项目时,我遇到了一个耦合问题。 当我构建自定义控制器工厂(如果使用MVC 3,则为依赖关系解析程序)时,我需要该工厂知道从何处获取依赖关系的方式。 这是我的代码: StructureMapControllerFactory类负责将依赖项注入到控制