MVC验证不适用于基类在另一个项目中的位置

时间:2010-12-08 17:36:44

标签: model-view-controller validation annotations

我们有大量的MVC页面在我们的实体模型和其他本地定义的类上使用验证注释,这些工作正常。但是我现在有一个页面,其基类位于另一个(引用的)项目中,该项目无效。

某些anotations工作正常(例如“DisplayName”),但验证根本不起作用。例如,提交空白表单时,TryUpdateModel(object)返回True,尽管它们在两个字段中都是“必需”验证器。

“UserListInfo”类是引用的项目。我曾尝试使用和不使用“继承”但无济于事。

有什么想法吗?

<MetadataType(GetType(UserListInfoMetaData))> _
Partial Public Class UserListInfo
    Inherits [Other Project Namespace].UserListInfo
End Class

Public Class UserListInfoMetaData

    <UIHint("HiddenId")> _
    Public Property UserID() As Object

    <DisplayName("Email Address")> _
    <Required(ErrorMessage:="You must enter an Email Address")> _
    <StringLength(150, ErrorMessage:="Cannot be more than 150 characters long.")> _
    Public Property Username() As Object

    <DisplayName("Name")> _
    <Required(ErrorMessage:="You must enter a Name")> _
    <StringLength(150, ErrorMessage:="Cannot be more than 150 characters long.")> _
    Public Property FriendlyName() As Object

End Class

1 个答案:

答案 0 :(得分:1)

好吧,我似乎做错了就是在“Inherits”语句中提供一个完全限定的路径。如果我导入基类命名空间然后使用部分限定的路径,那么一切似乎都没问题!

...即

<MetadataType(GetType(UserListInfoMetaData))> _
Partial Public Class UserListInfo
    Inherits Bob.Fred.Jim.UserListInfo
End Class

不起作用,但是......

Imports Bob.Fred

Class XYX

    <MetadataType(GetType(UserListInfoMetaData))> _
    Partial Public Class UserListInfo
        Inherits Jim.UserListInfo
    End Class
    .
    .
    .

End Class

呢!