【问题标题】:ASP.NET MVC 3 ModelStateASP.NET MVC 3 模型状态
【发布时间】:2012-01-30 21:03:59
【问题描述】:

好的,我有一个问题,ModelState 错误没有映射到正确的属性。

让我看看能不能解释一下。

我有一个像这样的 ViewModel:

public class MyViewModel
{
    public string Prop1 {get;set;}
    public string Prop2 {get;set;}
    ....
}

在我看来,我有一个模型,它有一个这种类型的集合,我有一个 EditorTemplate 。所以它会生成MyViewModels[0].Prop1MyViewModels[1].Prop1等。

问题是,当我通过一个名为 IValidationDictionary 的接口在我的服务层中设置错误时,它没有将错误附加到模型状态的正确行查看,而不是到模型的末尾为Prop1

编辑

这是 ModelStateWrapper(VB - 抱歉!)

Public Class ModelStateWrapper
    Implements IValidationDictionary

#Region "Private Members/Properties"

    Private modelState As ModelStateDictionary

    Public ReadOnly Property IsValid As Boolean Implements IValidationDictionary.IsValid
        Get
            Return modelState.IsValid
        End Get
    End Property

#End Region

#Region "Constructor(s)"

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

    End Sub

#End Region

#Region "Methods"

    Public Sub AddError(key As String, message As String) Implements IValidationDictionary.AddError
        modelState.AddModelError(key, message)

    End Sub

#End Region

End Class

【问题讨论】:

  • 没有看到任何环绕模型状态的代码,您如何期望任何人能够回答为什么它不能正常工作?

标签: asp.net-mvc asp.net-mvc-3 modelstate


【解决方案1】:

听起来你可能正在使用依赖注入并将ModelStateDictionary注入你的ModelStateWrapper类,它再次注入你的服务层?

我只能猜测注入的内容是不使用您当前 HTTP 请求的Controller class ModelState property (ModelStateDictionary)

您是否有机会初始化ModelStateDictionary一个新实例并将其传递给您的ModelStateWrapper? 如果你使用依赖注入,请告诉我你的注入配置,以便我给你一个更好的答案。

【讨论】:

    猜你喜欢
    • 2010-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    相关资源
    最近更新 更多