2009-03-28 4 views
1

Je suis en train d'ajouter ASP.NET MVC à une application WebForms. L'une des caractéristiques intéressantes d'une solution ASP.NET MVC que vous créez à partir de zéro est qu'un clic droit sur l'explorateur de solution et Ajouter> Nouvel élément ... donnera une liste de modèles qui incluent les modèles MVC. Cependant, dans une application WebForms, ces modèles n'apparaissent pas.Comment activer les modèles MVC dans VS2008 à partir d'une application WebForms?

Je pensais qu'il y avait peut-être un paramètre dans le fichier de solution .sln qui indiquait que l'un était une application ASP.NET MVC mais que je ne trouvais rien de ce qui dépassait. EDIT: Pour développer la question, comment Visual Studio sait-il ajouter un élément de menu "Contrôleur ..." dans le menu "Ajouter" lorsque vous faites un clic droit sur le dossier Contrôleurs dans l'Explorateur de solutions d'une application MVC ? De même, il ajoute un élément de menu "Afficher ..." au menu "Ajouter" lorsque vous faites un clic droit sur le dossier Vues. D'où Visual Studio tire-t-il cette information et comment puis-je ajouter ces 2 dossiers à une autre application Web et obtenir la même fonctionnalité?

Des idées?

Répondre

2

Je crois que la logique qui est contenue dans le dll

Microsoft.VisualStudio.Web.ExtensionsUI

qui est enregistré dans le modèle de projet utilisé lorsque vous créez un nouveau ASP. projet NET MVC:

<WizardExtension> 
    <Assembly> 
    Microsoft.VisualStudio.Web.Extensions, 
    Version=9.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=31bf3856ad364e35 
    </Assembly> 
    <FullClassName> 
    Microsoft.VisualStudio.Web.Mvc.TemplateWizard 
    </FullClassName> 
</WizardExtension> 

C: \ Program Files \ Microsoft Visual studio 9.0 \ Common7 \ IDE \ ProjectTemplates \ CSharp \ Web \ 1033 \ MvcWebApplicationProjectTemplatev1.cs.zip

Vous pourriez probablement aussi mess avec le type de projet Guids dans votre fichier .xxproj:

<ProjectTypeGuids> 
    {603c0e0b-db56-11dc-be95-000d561079b0}; 
    {349c5851-65df-11da-9384-00065b846f21}; 
    {fae04ec0-301f-11d3-bf4b-00c04f79efbc} 
</ProjectTypeGuids> 

semblent être ceux par défaut pour un projet ASP.NET MVC, comparez ceux avec ceux de votre application web, et allez-y.

Cependant, dans beaucoup de ces circonstances, je serais d'accord avec gisresearch: il est souvent plus facile de créer le projet le plus complexe (le MVC), puis de déplacer le origininal dans celui-ci. De plus, rien ne vous empêche d'avoir plusieurs projets hébergés dans la même application Web: récupérez la logique commune de l'application Web dans une bibliothèque de classes partagée, puis faites référence à cette application depuis une application MVC propre, avec un espace de noms légèrement différent , puis fusionnez les deux sites dans IIS, déposez les DLL dans un dossier bin partagé (ou bien nommez-les et placez-les dans le cache de l'assembly global), partagez les images/scripts, et vous partez - vous devez juste prendre soin avec le Global.asax, qui serait commun aux deux.

0

Que diriez-vous de l'inverse. Créez d'abord un projet mvc asp.net, puis ajoutez votre code de formulaire Web.

Voici un exemple de hybrid app de Scott Hanselman.

Vous pouvez également envisager de créer une application asp.net mvc par défaut et une application de formulaire Web asp.net, puis de comparer deux projets pour voir quelle est la différence.

0

Comme Zhaph mentionné, l'ajout de ProjectTypeGuid a fonctionné pour moi.Déchargez le projet Web, modifiez et ajoutez le ProjectTypeGuid supplémentaire à la liste existante.

{603c0e0b-db56-11dc-be95-000d561079b0};

Questions connexes