2010-10-07 3 views
1

Est-il possible de tirer parti de l'injection de dépendance dans Asp.net MVC 3 (en utilisant Forms ViewEngine) pour injecter UserControls à partir d'une autre bibliothèque? J'utilise déjà MEF pour charger d'autres choses dans mon application MvcApplication.Asp.net MVC 3 injecter UserControl pour TemplateHint

J'ai besoin de cela parce que je veux construire un système avec un système de type extensible. Je souhaite que le fournisseur de type puisse injecter des contrôles personnalisés pour le type fourni. J'ai déjà un MetadataProvider personnalisé qui sait comment gérer les types fournis (il définit la propriété ModelMetadata.TemplateHint).

La question est où puis-je brancher avec MEF, de sorte que le TemplateHint se manipulé correctement, et un contrôle personnalisé est dispalyed sur intitulant Html.EditorForModel

Répondre

2

Je ne peux pas penser à une façon de le faire en utilisant l'infrastructure actuelle de Service Locator dans MVC 3 beta. Je peux penser à deux alternatives alternatives cependant:

  1. Avoir un modèle d'éditeur qui au lieu de rendre les délégués HTML à vos contrôles personnalisés et retourne leur sortie.
  2. Ecrivez votre propre ViewEngine qui peut effectuer des recherches pour les vues partielles (les chemins seront de la forme "EditorTemplates/YourTypeName" etc.) et retourner une vue qui sait comment parler à vos contrôles personnalisés.
+0

Bonjour, Je viens de mettre en place mon propre ViewEngine. J'ai simplement dû implémenter IViewEngine.FindPartialView, analyser l'id de type personnalisé de l'argument partialViewName et déléguer le rendu au type personnalisé. Donc, votre réponse est plutôt correcte :) – m0sa

+1

Je suis assez sûr que # 2 est exactement ce que vous avez décrit :) – marcind