2009-08-07 12 views
6

¿Alguien tiene un ejemplo de clases de compañeros en ASP.NET MVC 2 Preview 1? Parece que no puedo encontrar nada en MSDN al respecto, pero de acuerdo con ScottGu, han agregado funcionalidades en la versión más reciente.ASP.NET MVC V2 - Buddy Classes

Respuesta

10

Creo que lo que estás buscando es MetadataTypeAttribute. Esto no es algo específico de MVC, sino parte del espacio de nombres de DataAnnotaciones introducido en 3.5. Le permite decorar miembros de una clase parcial externa a la clase misma.

Por ejemplo, si tiene un tipo de clase parcial generado denominado Cliente y desea agregarle atributos, puede crear un nuevo parcial en el mismo espacio de nombre y etiquetarlo con MetadataType. Luego crea la clase Metadata con los atributos que coinciden y decoralos.

/* 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; } 
} 
+0

Gracias toneladas! Eso es exactamente lo que necesitaba. :) –

+0

¿Cuál es el sentido de separar las clases? – UpTheCreek

+1

No es tanto un "punto", ya que es una solución fea para manejar las clases autogeneradas de EF o LINQ2SQL. Debido a que los archivos de clase se generan, no hay forma de aplicar atributos a las propiedades, por lo que se creó una alternativa hacky. –