Проверка MVC не работает, если базовый класс находится в другом проекте - PullRequest
1 голос
/ 08 декабря 2010

У нас есть большое количество страниц MVC, использующих аннотации проверки на нашей модели сущностей и других локально определенных классах, и они отлично работают.Однако теперь у меня есть страница, базовый класс которой находится в другом (указанном) проекте, который не работает.

Некоторые аннотации работают нормально (например, «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 Ответ

1 голос
/ 09 декабря 2010

Хорошо, я, похоже, ошибся, указав полный путь в выражении "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

ли!

...