问题标签 [ninject.web.mvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
266 浏览

asp.net - Ninject MVC 3 并解析除构造函数或属性之外的依赖项

我有一个 MVC Web 项目、基础设施项目、服务项目和数据项目的解决方案。我在 Visual Studio 中从 NuGet 安装了 ninject。它在我的 Web 项目中创建了一个名为“App_Start”的文件夹,并将 Ninject 代码文件放在那里,我的应用程序运行良好。

我的问题是我需要解决作为属性或构造函数的 Web 项目之外的依赖项。

我在我的服务项目中的一个课程中尝试过这个:

这每次都返回 null 。例如,当我在 HomeController 中尝试完全相同的事情时,它会返回我所期望的。

我怀疑这与项目如何相互引用有关。我的 Web 项目显然引用了所有其他项目。我考虑将 Ninject 启动代码移动到我的基础设施项目中,以便我可以在任何地方访问它。这样做有意义吗?有没有其他人遇到过这个问题,或者我缺少什么?

对此的任何帮助都会很棒。谢谢。

0 投票
2 回答
2414 浏览

asp.net-mvc-3 - 如何阻止 Ninject 覆盖自定义 DataAnnotationsModelValidatorProvider?

我有一个自定义 DataAnnotationsModelValidatorProvider 用于以更动态的方式进行模型验证,然后只添加属性。我尝试将我的提供添加到 global.asax.cs,如下所示:

但是,一旦我加载我的表单,我就会收到一条错误消息,提示“不显眼的客户端验证规则中的验证类型名称必须是唯一的。以下验证类型被多次看到:必需”。

根据此博客的评论,这是因为 Ninject 覆盖了自定义验证器提供程序。

我对 MVC 还很陌生,我似乎无法找到一种方法来告诉 Ninject 也接受我的自定义提供程序,我将如何解决这个问题?

作为记录:我不想使用 Fluentvalidation.net,我想坚持使用默认的 MVC 验证(大部分)。

0 投票
1 回答
1679 浏览

asp.net-mvc-3 - 使用 Ninject 作为我的 IDependencyResolver 有严重的问题吗?请协助

我创建了一个实现 IDependencyResolver 的 NinjectResolver。在 global.asax 中,我将这个人设置为我的 DependencyResolver。

但是,这样做时,我在验证时丢失了所有数据破折号属性。而且它还弄乱了整个客户端分页,在我的网格上排序(使用 Telerik 的 MVC 扩展)。

这是课程:

这是我的应用程序从 global.asax 开始...

如果我注释掉 SetResolver 行,我的所有客户端验证以及我的客户端网格排序、分页、过滤等都可以正常工作。不幸的是,我丢失了所有构造函数注入。

任何帮助表示赞赏。不确定我是否必须添加更多模块才能使客户端操作正常工作?

请指教。

0 投票
1 回答
616 浏览

asp.net-mvc - 为什么 Ninject Mvc NinjectHttpApplication 不将 IControllerFactory 用于 CreateControllerFactory()

我正在查看 Ninject MVC 源代码,生成用于覆盖默认值的控制器工厂的方法被硬编码为仅返回 NinjectControllerFactory,但是由于将其设置为虚拟,因此(在我看来)使用 IControllerFactory 会更有意义.

我喜欢 Ninject,我确信这样做是有原因的,但是目前有一个问题,我需要编写自己的 ControllerFactory 并使用它,但仍宁愿使用 NinjectHttpApplication。我知道我可以从 NinjectControllerFactory 继承,然后重写该方法以返回这个新实例,但我不会使用 Ninject 风格的任何功能,所以它看起来有点味道......

那么它是否有理由不使用 IController 或者这可能会在新版本中进行更改?

0 投票
1 回答
2021 浏览

asp.net-mvc - Ninject 绑定/解除绑定问题

我有点进退两难,老实说,这是一个边缘案例,但仍然存在问题。

目前我正在使用 Ninject MVC 并像这样绑定我的所有控制器:

这对我需要做的 99% 的事情都有效,但是目前我正在围绕动态路由和动态控制器做一些古怪的事情,这需要我手动编写一个方法来从 ninject 获取控制器的类型。现在最初我认为这很容易,但它不是......我期待我可以根据它的名字获得控制器,但那没有用。

这让我想到这可能是因为它只知道与 SomeController 的绑定,而不是 IController。所以我想,我可以像这样写我所有的绑定:

这种方式应该很容易从前面代码的名称中获取控制器的类型,但是如果我以这种方式绑定,当我解除绑定控制器时会遇到问题(因为可以加载和卸载插件在运行时)。所以正常:

太好了,将不再起作用,我将不得不这样做:

但是后来我意识到我需要给它一些约束来告诉它我想取消绑定该类型的哪个绑定,并且似乎没有重载或 DSL 可用于执行此操作......

所以我被困在一块石头和一个坚硬的地方,因为我需要满足 ControllerLookup 方法,但还需要保留它,以便我可以在运行时轻松添加和删除绑定。

有人有想法么?

(以防有人质疑我为什么这样做,这是因为我加载插件的方式,Ninject 知道类型和命名空间,但在创建控制器的上下文中,它不知道命名空间只是控制器名称,所以我这样做是为了满足插件的隔离,以及动态控制器的位置,这是一种迂回的做法,但这是人们在 AutoFac 之前用 AutoFac 做过的类似事情的例子

0 投票
2 回答
288 浏览

c# - 使用 NinjectMvc3 设置实体连接字符串

我第一次安装了 Ninject。我正在使用 NinjectMvc3 版本,它通过 Nuget 在 App_Start 文件夹中为您提供 NinjectMvc3 类。在 RegisterServices方法中,我试图连接我在 web.config 中的实体连接字符串。基本上我现在拥有的就是这个。

这给了我以下错误异常详细信息: System.InvalidOperationException:在应用程序的预启动初始化阶段无法调用此方法。

这是一些源错误:

我究竟做错了什么?

编辑:我可以补充一点,我正在使用实体框架和存储库模式。我希望做的是以某种方式在 web.config 中创建实体连接字符串的实例并将其与 NinjectMvc3 绑定。有人对此事有什么好的意见吗?

0 投票
1 回答
716 浏览

asp.net-mvc-3 - 使用 MvcSiteMapProvider + DI + 存储库模式 = 存储库对象为空

在我的应用程序中,我有一个项目登记册。要访问这些项目是 url:/project/{url-project}

我使用这个项目来生成路径,但由于“注册项目”是动态的,因此必须手动实现它,如本文所示。

所以我做了:

在我的 Mvc.sitemap

问题

我的问题是ProjectRepository始终为空!

但在我的设置中,Ninject 是正确的!该存储库在控制器中使用,并且运行良好

尝试

我试图通过构造函数注入这个依赖,但结果是一样的!

0 投票
1 回答
353 浏览

wcf - Ninject WCF 扩展在 MVC3 Ninject 网站中不起作用

我们需要向我们的网站添加服务,我添加了 MVC 扩展并添加了

对于标记,我还添加了

到 CreateKernel 方法来摆脱 root null 问题,但现在我得到了

提供的服务类型无法作为服务加载,因为它没有默认(无参数)构造函数。要解决此问题,请将默认构造函数添加到类型,或将类型的实例传递给主机。

构造函数中的类型绑定在内核中

谢谢

编辑:这有效

0 投票
2 回答
474 浏览

nunit - 测试通过 Nuget 安装的 Ninject 项目 - WebActivate 行为

我正在尝试为使用 Ninject 的项目创建 NUnit 测试。Ninject 是通过 Nuget 安装的,因此 Configuration 类看起来类似于这个简化版本:

我希望在我的启动测试类中调用这些方法。我试过:

它不起作用,因为我试图手动调用由 WebActivator 管理的方法。所以我正在寻找一种方法来指示 WebActivator 在“正确的时间”调用这些方法。让我提醒您,我正在处理两个项目,一个是 MVC Web 项目(它使用 WebActivator for Ninject),另一个是我的 MVC Web 项目的测试项目。我试图通过更改我的 Setup 方法的实现来调用 WebActivator:

它不起作用。据我了解,在此调用下,WebActivator 应该执行以下操作:

所以我猜它无法找到一个程序集。所以问题是 - 我如何命令 WebActivator 通过一些额外的程序集进行扫描并在“正确的时间”触发一些方法。或者我在这里被误导了,为了测试我的 Ninject 项目,我应该采取不同的方法?

我可以在没有 WebActivator 的情况下测试我的解决方案,但由于它最近被广泛使用,我很想学习如何处理它并强制它做我想做的事情。

0 投票
1 回答
2016 浏览

asp.net-mvc-3 - 如何不使用 Ninject 的内核作为资源定位器

我对 Ninject 和一般的 DI 也很陌生。我使用 NHibernate 作为我的 MVC 应用程序的 ORM,并且对我的结果非常满意。也就是说,直到我从 Ninject 2.1 升级到 2.2。

现在,由于使用 Ninject 的内核作为资源定位器,我的 NinjectWebsiteApplication 类中出现错误。

例子:

示例 2:

*Bootstrapper该类是我创建的一个类,我在其中注册我的路线、全局过滤器等。

在上述两个示例中,我都会收到有关Kernel.Get()函数的警告,其中指出以下内容:

'Ninject.Web.Mvc.NinjectHttpApplication.Kernel' 已过时:“不要使用 Ninject 作为服务定位器”

在对此进行了几次搜索之后,普遍的共识是这是真的。

我正在尝试解决此问题,但不知道该怎么做。

我加载了最新的 Ninject.Web.Mvc NuGet 包,它在 App_Start 文件夹下创建了 NinjectMVC3 静态类。我看到他们正在引用Microsoft.Web.Infrastructure.DynamicModuleHelper,但我看不出这适合我正在尝试做的事情。

如果有人有任何提示可以帮助我解决我的小麻烦,我将不胜感激!