Добавьте MetadataType к производному классу в C # - PullRequest
5 голосов
/ 22 августа 2011

У меня есть класс с именем

public partial class Contact
{
   public int Id { get; set; }
   public string Title { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

У меня есть другой класс с именем

public partial class Person : Contact
{
   public string Occupation { get; set; }
   public string Country { get; set; }
}

У меня есть третий класс с именем Person, который объявлен как Partial, и Четвертый класс с именем PersonMetaData, используемый для объявленияаннотации

 [MetadataType(typeof(PersonMetadata))]
    public partial class Person : Contact
    {

    }

    public class PersonMetadata
    {
         [StringLength(20, ErrorMessageResourceName = "FirstNameLength",   
         ErrorMessageResourceType = typeof(BasicErrors))]
        [Required(ErrorMessageResourceName = "FirstNameRequired",  
          ErrorMessageResourceType  = typeof(BasicErrors))]
        public string FirstName { get; set; }

        [StringLength(20, ErrorMessageResourceName = "LastNameLength", 
         ErrorMessageResourceType = typeof(BasicErrors))]
        [Required(ErrorMessageResourceName = "LastNameRequired", ErrorMessageResourceType 
         = typeof(BasicErrors))]
        public string LastName { get; set; }
    }

В моем MVC View я создал строго типизированную страницу на основе Person?Проблема в том, что обязательные проверки длины строки не работают.Эта проблема возникает при наследовании класса и создании частичного класса для ссылки на MetadataType.

Если наследования нет, MetadataType работает нормально при вызове частичного класса.

Любые решения при использовании MetadataType дляпроизводный класс и использование частичного с ним ??

Спасибо

Ответы [ 2 ]

3 голосов
/ 22 августа 2011

Это была проблема в MVC2. Однако это работает в MVC3. Смотрите следующую статью:

http://connect.microsoft.com/VisualStudio/feedback/details/538360/asp-net-mvc-2-rc2-the-client-side-validation-does-not-work-with-overridden-properties

1 голос
/ 23 августа 2011

Удалите это частичное и попробуйте это:

[MetadataType(typeof(PersonMetadata))]
public partial class Person : Contact
{
   public string Occupation { get; set; }
   public string Country { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...