Add View Model class dropdown ne montrant pas ma classe
j'ai créé un nouveau C# asp.net mvc 4.0 (beta) Application Internet et j'ai un comportement un peu étrange dans la boîte de dialogue Add View dans Visual Studio 2010 (sp1). Lorsque je décide de créer une vue fortement typée, dans la boîte de dialogue Ajouter une vue, le menu déroulant de la classe Model n'affiche pas ma classe ViewModel.
pour l'enregistrement, Oui j'ai compilé l'application avant de déclencher la boîte de dialogue Add View.
je crois que j'ai mis le doigt sur la question mais je ne sais pas comment remédier. Vous trouverez ci-dessous les étapes de reproduction si quelqu'un se soucie de reproduire le comportement:
- dans Visual Studio 2010 (sp1), créer un nouveau C# asp.net CVM 4.0 (beta) Application Internet.
- à l'intérieur du dossier Models, créez une nouvelle classe simple appelée "GazouViewModel.cs"!--11-->
- construisez l'application, ouvrez le HomeController, cliquez sur le bouton droit de la souris Index() ActionResult et sélectionnez Ajouter...
- dans la boîte de dialogue Ajouter une vue, cochez la case "vue fortement typée"" case à cocher et dans la classe Model: dropdown, vous remarquerez votre "GazouViewModel"
- dans Solution Explorer, cliquez avec le bouton droit de la souris sur votre projet et sélectionnez "Gérer". Les Packages NuGet"
- rechercher, trouver et installer le "Bootstrapper.Autofac " package.
- recompilez l'application et vérifiez si votre" GazouViewModel " est toujours s'affiche dans la boîte de dialogue Add View dropdown.
- le "GazouViewModel" devrait toujours être affiché dans le déroulante.
- dans Solution Explorer, cliquez avec le bouton droit de la souris sur votre projet et sélectionnez "Gérer". Les Packages NuGet"
- rechercher, trouver et installer le " Autofac ASP.NET MVC4 (bêta) L'intégration".
- recompilez l'application et vérifiez si votre" GazouViewModel " est toujours s'affiche dans la boîte de dialogue Add View dropdown.
- le "GazouViewModel" devrait toujours être affiché dans le déroulante.
- dans Solution Explorer, faites un clic droit sur votre projet et ajoutez une nouvelle classe (Classe1.cs) n'importe où il n'a pas d'importance.
- faire en sorte que la classe1 mette en œuvre L'Iautofacregistrement et mette en œuvre les interface.
- recompilez l'application et vérifiez si votre" GazouViewModel " est toujours s'affiche dans la boîte de dialogue Add View dropdown.
- le "GazouViewModel" n'apparaît plus à l'intérieur du modèle classe déroulante.
Il semble que dès que je créer une classe qui implémente l' IAutofacRegistration
interface et construire l'application, Je ne suis plus capable de voir mes modèles de vue dans ce dropdown.
quelqu'un Peut confirmer si ils obtiennent les mêmes résultats que moi? Et plus important encore, comment peut-on arranger ça?
IMPORTANT: j'ai essayé exactement les mêmes étapes avec une application mvc 3.0 et le même comportement se produit ... alors ceci n'est pas pertinent pour la version bêta.
sincèrement Vince
9 réponses
si vous recevez un message d'erreur: "exécution de la transformation: le fichier d'entrée semble utiliser une version de schéma non supportée par ce modèle. Cela peut conduire à des erreurs de compilation. Veuillez utiliser "Ajouter un Nouveau Point' pour ajouter un modèle mis à jour".
vous êtes utilisé EF 5.x. Vous devez ajouter des métadonnées pour EF 5.x pour votre modèle T4. Dans l'en-tête de fichier, call DefineMetadata ()
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ import namespace="System.Text.RegularExpressions" #>
<#@ include file="EF.Utility.CS.ttinclude"#><#@ output extension=".cs"#><#
DefineMetadata();
au bas de votre template créer la méthode
private void DefineMetadata()
{
TemplateMetadata[MetadataConstants.TT_TEMPLATE_NAME] = "CSharpDbContext.Types";
TemplateMetadata[MetadataConstants.TT_TEMPLATE_VERSION] = "5.0";
TemplateMetadata[MetadataConstants.TT_MINIMUM_ENTITY_FRAMEWORK_VERSION] = "5.0";
}
j'ai résolu ce problème en devenant fou en 2 heures et en supprimant l'Assemblée.cs à partir des Propriétés de dossier dans la solution. Après j'ai fait une reconstruction de la solution, la "vue" modèle-liste soudain pourrait trouver tout mon Viewmodel, assez étrange.
je suppose la version d'assemblage définie dans L'assemblage.cs s'est en quelque sorte confondu avec la version utilisée dans le projet. De toute façon, ça marche maintenant pour mon affaire.
ce qui a fonctionné pour moi était de simplement construire la solution après avoir créé mon modèle. Puis j'ai pu trouver mon modèle dans la liste déroulante.
j'ai aussi remarqué ce problème (en utilisant MVC 4 Beta sur Visual Studio 2010). Redémarrer Visual Studio a résolu le problème pour moi.
mise à jour: A partir de cette Écriture, Je ne peux plus reproduire l'erreur. Peut-être que les paquets NuGet que j'utilise ont été mis à jour vers une version plus récente et ont d'ailleurs corrigé l'erreur.
je vais marquer ce post est fermé.
Merci pour la contribution de tout le monde!
Vince
juste nettoyer et construire votre solution. Il a travaillé pour moi.
juste une autre solution à ajouter à la pile car aucun des autres n'a fonctionné pour moi. Ceci est un autre exemple de studio visuel étant terrible à manipuler des chemins de fichier longs et des espaces de noms.
dans mon cas, l'espace de noms était trop long pour être affiché dans la liste déroulante de la "classe modèle". Raccourcir le namespace (une douleur ridicule en soi) a fait la chute vers le bas de travail à nouveau!
en utilisant VS 2010 et MVC 3.0, à un moment donné le dropdown de la classe Add View Model ne montrait aucune classe pour moi. La suggestion d'Ivan de redémarrer VS a semblé fonctionner pour moi.
j'ai essayé de supprimer AssemblyInfo.cs, a fait un nettoyage, et une reconstruction, mais ceux n'ont pas résolu le problème. Quand J'ai redémarré VS, les classes Modèles étaient de retour dans la liste.
je me rends compte que c'est un peu dépassé. J'ai eu une situation similaire où mes classes ne se chargeraient pas dans l'assistant de modèle de vue. J'utilise VS 2012 avec MVC3. Tout le monde dans l'équipe était OK, heureusement vieux m'avaient des problèmes. Après beaucoup de recherches et d'essais de beaucoup de choses la seule chose qui a toujours corrigé C'est d'exécuter VS en mode safemode (à partir de la commande prompt: "C:\Program fichiers (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe" /mode sans échec). Une de mes extensions doit être en provoquant le problème et en tournant en Mode sûr ceux ne sont pas chargés.