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

asp.net-mvc – DI ninject为控制器而不是视图模型工作

发布时间:2020-12-16 03:26:40 所属栏目:asp.Net 来源:网络整理
导读:嗨,我正在使用ninject与MVC应用程序. 我确信我已正确设置,因为我能够让它适用于我的控制器.以下是控制器的示例,它正常工作: public class GstRateController : Controller { private readonly IUnitOfWork _unitOfWork; public GstRateController(IUnitOfWo
嗨,我正在使用ninject与MVC应用程序.

我确信我已正确设置,因为我能够让它适用于我的控制器.以下是控制器的示例,它正常工作:

public class GstRateController : Controller
    {
        private readonly IUnitOfWork _unitOfWork;

        public GstRateController(IUnitOfWork unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }
...

然后我认为它在viewModel上也会很好所以我尝试了:

public class SettingController : Controller
    {
        private readonly IUnitOfWork _unitOfWork;

        public SettingController(IUnitOfWork unitOfWork)
        {
            _unitOfWork = unitOfWork;
        }

然后我通过以下方式在控制器中实例化视图模型:

public ActionResult Index()
        {
            return View("Index",Activator.CreateInstance<SettingViewModel>());
        }

但这给了我错误:

没有为此对象定义的无参数构造函数.

我是DI的新手.请问有人请告诉我如何为viewmodels实现这个目标?

解决方法

它适用于控制器而不是视图模型的原因是因为当您安装NInject NuGet时,它会注册一个自定义依赖项解析器,ASP.NET MVC框架使用控制器工厂或依赖项解析器来实例化控制器.您可以在 this article中阅读有关依赖项解析器的更多信息.

另一方面,查看模型是专门为满足给定视图要求而设计的类.由于您手动实例化它们,因此DI框架永远不会拦截并向其中注入任何依赖项.他们不应该有依赖.它们应该是从域模型映射的简单POCO对象.它们代表一个或多个领域模型的项目.

(编辑:李大同)

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

    推荐文章
      热点阅读