【问题标题】:Ninject - Inject ModelState into Service?Ninject - 将 ModelState 注入服务?
【发布时间】:2011-03-11 19:23:52
【问题描述】:

我有一个带有如下构造函数的控制器:

Public Sub New(Service As ICategoryService)

服务的构造函数如下所示:

Public Sub New(Repository As IRepository(Of Category), IValidationDictionary)

我有一个名为 ModelStateWrapper 的类,它实现了 IValidationDictionary:

Public Class ModelStateWrapper
    Implements IValidationDictionary

    Private ModelState As ModelStateDictionary

    Public Sub New(ModelState As ModelStateDictionary)
        Me.ModelState = ModelState

    End Sub

    Public Sub AddError(Key As String, Message As String) Implements Core.Interfaces.IValidationDictionary.AddError
        ModelState.AddModelError(Key, Message)

    End Sub

    Public ReadOnly Property IsValid As Boolean Implements Core.Interfaces.IValidationDictionary.IsValid
        Get
            Return ModelState.IsValid
        End Get
    End Property

End Class

我想将控制器的 ModelState 注入到 ModelStateWrapper 中,然后将其注入到服务中。这可能吗?

我查看了 Ninject 中的自定义提供程序,并让控制器继承了 BaseController 类,但它似乎不起作用。有什么想法吗?

另外,可以从控制器使用的服务层中进行验证的标准方法是什么?

【问题讨论】:

标签: asp.net-mvc ninject


【解决方案1】:

您在尝试注入 ModelState 时似乎会遇到问题,因为一旦在一个动作方法中,您已经拥有要传递到包装器中的 ModelState 实例

并非每个对象都需要或应该注入。有时,这种情况可能是其中一种情况,“注入”或将依赖项或对象作为参数提供给需要它的方法会更干净、更容易和更简单。也就是说,将IValidationDictionary 作为参数传递给服务中的方法。在控制器中构造一个 ModelStateWrapper(新建或使用工厂),并将其传入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多