Voici un exemple de la façon dont il fonctionne maintenant:Existe-t-il un moyen d'instruire ASP.NET MVC à propos de certaines métadonnées de classe autres que de placer MetadataTypeAttribute directement dans la classe?
[MetadataType(typeof(PersonMetadata))]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonMetadata
{
[Required]
public string Name { get; set; }
[Range(0,150]
public int Age { get; set; }
}
Cependant, je ne veux pas le MetadataAttribute à mettre sur la classe Person, au lieu que je veux une certaine façon de dire au framework MVC « hey si vous rencontrez personne class the metadate est dans la classe PersonMetadata ". Il est juste en train d'inverser la direction qui, pour moi, semble plus compositionnelle et suivre le principe de l'ouverture-fermeture puisque je n'ai pas besoin de toucher la classe Person pour "l'étendre" avec des métadonnées.
Je sais que cela crée un problème de rattachement de métadonnées multiples et conflictuelles, augmente également la complexité mais la flexibilité a toujours un prix.
Je veux soit une manière programmatique ou déclarative ou de préférence les deux :)
Donc, on pourrait être quelque chose comme:
MetadataTypeMappings.Add(typeof(Person), typeof(PersonMetadata));
Une autre pourrait être:
[MetadataFor(typeof(Person)]
public class PersonMetadata
{
[Required]
public string Name { get; set; }
[Range(0,150]
public int Age { get; set; }
}
Bon quetsion. J'imagine que vous pourriez aussi adopter une approche basée sur une convention. Probablement un classeur de modèle personnalisé est la voie à suivre, mais peut-être quelqu'un d'autre qui a traité cela auparavant peut remplir les détails. – UpTheCreek