Est-il possible d'accéder à une classe parente à partir d'un attribut?Classe parent d'accès à partir d'un attribut personnalisé
Par exemple, je voudrais créer un DropDownListAttribute qui peut être appliquée à une propriété d'une classe viewmodel dans MVC puis créer une liste déroulante à partir d'un modèle de l'éditeur. Je suis une ligne similaire à Kazi Manzur Rashid here.
Il ajoute la collection de catégories dans viewdata et les récupère en utilisant la clé fournie à l'attribut.
Je voudrais faire quelque chose comme ci-dessous,
public ExampleDropDownViewModel {
public IEnumerable<SelectListItem> Categories {get;set;}
[DropDownList("Categories")]
public int CategoryID { get;set; }
}
L'attribut prend le nom de la propriété contenant la collection à lier. Je n'arrive pas à comprendre comment accéder à une propriété de la classe parente de l'attribut. Est-ce que quelqu'un sait comment faire ça?
Merci
Merci pour la réponse. Où irait ce code? Je ne vois pas comment intégrer cela dans le fournisseur de métadonnées proposé par Kazi. De plus, vous ne semblez pas réfléchir sur une instance, alors comment obtiendriez-vous la collection de la propriété Categories. – madcapnmckay
Veuillez noter qu'un attribut personnalisé est un décorateur pour votre objet et que ses informations sont ajoutées aux métadonnées des objets générés par le compilateur. Donc, fondamentalement, lorsque vous décorez une propriété de catégorie avec votre attribut DropDownList, vous pouvez déterminer pendant le rendu du modèle s'il doit être affiché en tant que liste déroulante ou non. –