Si vous avez:Comment accéder au type attendu par ViewUserControl lors de l'exécution?
System.Web.Mvc.ViewUserControl<T>
Comment accéder à T lors de l'exécution?
J'ai une classe de base que je passe dans
Html.RenderPartial("ViewName", BaseControlModel);
mais je veux créer une autre méthode d'extension telle que
Html.RenderTypedPartial("ViewName", BaseControlModel);
telle que, dans le contexte de ViewName.ascx mon BaseControlModel se transforme dans le type T de la déclaration d'origine. J'ai déjà le code pour transformer BaseControlModel dans le type que je pense, il ressemble à ceci:
BaseControlModel.GetModel<T>();
mais je veux invoquer cet intérieur RenderTypedPartial génériquement, au lieu de type T spécifiquement demandé à mon avis. Je suis allé de l'avant et copié collé RenderPartial et FindPartialView dans ma propre méthode d'extension à partir de la source sur CodePlex et le type que je reçois pour ma référence IView est un WebFormView qui n'a pas le type en tant que l'argument générique que je définissais dans mon .ascx partiel ...
qui est la partie facile; la partie la plus difficile est comment obtenez-vous la référence à obj représentant le ViewUserControl? – gazarsgo
Publiera la réponse ci-dessus. –
Je n'ai pas besoin d'un type ouvert de ViewUserControl, j'ai besoin du type fermé défini par mon .ascx. J'ai creusé un peu plus et il semble que je pourrais ne pas avoir de chance jusqu'à la prochaine version de MVC car elle est encore étroitement couplée au moteur de rendu webforms - BuildManager convertit ViewUserControl en WebFormView donc je perds probablement ma référence de type sauf Je crée mon propre BuildManager ... – gazarsgo