当前位置: 首页 > 编程语言 > C#

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

时间:2023-04-10 17:01:03 C#

如何在模型创建期间覆盖ASP.NETMVC3默认模型绑定器以解决依赖关系(使用ninject)?我有一个使用Ninject解决依赖关系的ASP.NETMVC3应用程序。到目前为止,我所做的只是使全局文件继承自NinjectHttpApplication,然后覆盖CreateKernel方法以映射我的依赖项绑定。之后,我能够在我的MVC控制器构造函数中包含接口依赖项,并且ninject能够解决它们。一切都很好。现在我想在模型绑定器创建我的模型实例时解决模型绑定器中的依赖关系,但我不知道该怎么做。我有一个视图模型:publicclassCustomViewModel{publicCustomViewModel(IMyRepositorymyRepository){this.MyRepository=myRepository;}publicIMyRepositoryMyRepository{得到;放;}publicstringSomeOtherProperty{get;放;然后我有一个接受对象的操作方法的视图模型:[HttpPost]publicActionResultMyAction(CustomViewModelcustomViewModel){//想在这里有依赖解析的视图模型对象。我如何覆盖默认模型绑定器以包含ninject和解析依赖项?视图模型依赖于存储库是一种反模式。不要这样做。如果您仍然卡住了,这里有一个模型活页夹可能是什么样子的示例。这个想法是用自定义模型绑定器覆盖CreateModel方法:publicCustomViewModelBinder(IKernelkernel){_kernel=kernel;}protectedoverrideobjectCreateModel(ControllerContextcontrollerContext,ModelBindingContext,TypebindingContextmodelType){return_kernel.Get(modelType);你可以注册任何你需要注入的视图模型:以上是C#学习教程:HowtooverridetheASP.NETMVC3defaultmodelbindertoresolvedependenciesduringmodelcreation(usingninject)?如果分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注—ModelBinders.Binders.Add(typeof(CustomViewModel),newCustomViewModelBinder(kernel));代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: