using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; // Attention à l'espace de nom, lors de la création d'une nouvelle classe celui-ci sera par défaut : // namespace CD67.ModeleMVC.Entity.Extend // Alors que pour étendre une classe il faut être dans le même namespace que l'original namespace CD67.ModeleMVC.Entity { /// /// Classe d'extension de celle d'Entity, nécessaire pour y associer les Metadata /// [MetadataType(typeof(PARAM_Metadata))] public partial class PARAM { //Peut contenir une extension utile à la classe (méthode static ou non, nouvelles propriétés, propriétés construites dynamiquement selon d'autres de la classe, etc.) //Exemples de 2 propriétés booléennes qui ont en base de données 0 ou 1 public Nullable alwaysYes { get { return 1; } set { this.alwaysYes = value; } } public Nullable alwaysNo { get { return 0; } set { this.alwaysNo = value; } } } /// /// Classe contenant les DataAnnotations pour chaque champ /// public class PARAM_Metadata { [Required] [Display(Name = "Clé")] public string PRM_CLE; [Required] [Display(Name = "Libellé")] public string PRM_LIB1; [Required] [Display(Name = "Valeur")] [DataType(DataType.MultilineText)] public string PRM_LIB2; //Propriétés ajoutées dans la classe partielle et qui utilise un affichage customisé MVC "YesNo", qui se trouve ici : "Views\Shared\DisplayTemplates" et "Views\Shared\EditorTemplates" [Display(Name = "Toujours Oui")] [Range(0, 1)] [UIHint("YesNo")] public Nullable alwaysYes; [Display(Name = "toujours Non")] [Range(0, 1)] [UIHint("YesNo")] public Nullable alwaysNo; } }