2010-11-13 6 views
0

Je viens de créer un modèle personnalisé pour tous les éléments avec un FunctionPickerAttribute (attribut personnalisé que j'ai écrit moi-même). Maintenant, ce que le FunctionPickerAttribute fait est simplement de stocker le nom d'une méthode qui renvoie un IEnumerable<KeyValuePair<String, String>>.Obtention du conteneur dans un ASP.NET MVC EditorTemplate

Le modèle que j'ai créé trouve cet attribut, trouve la méthode (en utilisant la réflexion) et est supposé ensuite appeler cette méthode sur l'objet. Cependant, le problème est que FunctionPickerAttribute est affecté à une propriété de type string, de sorte que lorsque j'entre dans le FunctionPicker-template, je n'ai aucune idée de la façon d'obtenir une référence à mon objet.

Je peux trouver le type du conteneur (en utilisant ViewData.ModelMetadata.ContainerType), mais j'ai besoin d'obtenir une référence au conteneur d'une manière ou d'une autre. Est-ce possible? Et si c'est le cas, comment puis-je y arriver?

+0

Que voulez-vous faire exactement avec cela? –

+0

Je crée un projet piloté par un plugin, et un plugin doit pouvoir sélectionner un autre plugin basé sur un ensemble de critères. Par exemple, le MembershipPlugin doit être capable de choisir un EmailAccount à partir de EmailPlugin sans avoir aucune connaissance de ce que EmailPlugin a été sélectionné avant, sachant seulement qu'il implémente une certaine interface. J'aimerais expliquer plus si quelqu'un est intéressé par le projet (qui est open-source), mais le faire dans cette petite fenêtre de commentaire serait impossible :-). – Alxandr

Répondre

0

Pas votre façon de le faire. La seule façon d'obtenir le conteneur est de passer le modèle entier à votre modèle.

Si vous postez plus de code, je pourrais vous aider. Je fais souvent ce genre de chose.

+0

Eh bien. La quantité de code source en vigueur est un peu trop. J'ai trouvé une solution "fonctionnelle", mais je ne l'aime pas. J'ai créé mon propre objet-template personnalisé, qui vérifie si l'une des propriétés qu'il affiche est un 'FunctionPicker', et s'il déclenche le FunctionPicker-template avec le contexte dans son ViewData. Fonctionne, mais pas joli. – Alxandr

+0

Oh, au fait, le projet peut être trouvé ici: https://github.com/Alxandr/AppVisum, et ici: https://github.com/Alxandr/AppVisum.Sys (2 projets en solution). – Alxandr

Questions connexes