ASP.NET MVC V2 - дружеские классы

Есть ли у кого-нибудь пример классов друзей в ASP.NET MVC 2 Preview 1? Я не могу найти ничего об этом в MSDN, но согласно ScottGu они добавили для него функциональные возможности в самом последнем выпуске.


person Nathan Taylor    schedule 07.08.2009    source источник


Ответы (1)


Я считаю, что вы ищете MetadataTypeAttribute. Это не что-то специфическое для MVC, это часть пространства имен DataAnnotations, представленного в 3.5. Он позволяет вам украшать элементы частичного класса, внешние по отношению к самому классу.

Например, если у вас есть сгенерированный частичный тип класса с именем Customer и вы хотите добавить к нему атрибуты, вы можете создать новый частичный тип в том же пространстве имен и пометить его с помощью MetadataType. Затем создайте класс Metadata с соответствующими атрибутами и украсьте их.

/* Generated class */
public partial class Customer
{ 
  public string Name { get; set; } 
}


/* MetadataType decorated class */
[MetadataType(CustomerMetadata)]
public partial class Customer
{ /* ... */ }


/* Metadata type */
public class CustomerMetadata
{
  [Required(ErrorMessage = "Name is required")]
  public string Name { get; set; }
}
person andymeadows    schedule 07.08.2009
comment
Большое спасибо! Это именно то, что мне было нужно. :) - person Nathan Taylor; 07.08.2009
comment
Это не столько вопрос, сколько уродливый обходной путь для обработки автоматически сгенерированных классов из EF или LINQ2SQL. Поскольку файлы классов генерируются, нет возможности применить атрибуты к свойствам, поэтому была создана хакерская альтернатива. - person Nathan Taylor; 09.12.2009
comment
Я пытаюсь использовать этот подход, но единственный атрибут, который, кажется, работает в EditorForModel (), - это DisplayName. - person ProfK; 07.10.2010