2010-11-28 14 views
2

J'ai des problèmes pour utiliser T4MVC VB avec Visual Studio 2010 Express Edition.T4MVC VB avec Visual Studio 2010 Édition Express

Je peux référencer les classes T4MVC dans mes contrôleurs, mais je ne peux pas y accéder dans mes vues (là où j'en ai réellement besoin).

Dans la vue, le code suivant est remplacé par intellisense comme si la classe MVC est invalide.

MVC.Home.GameBoard 

Il est remplacé par

Mvc.Home.GameBoard 

qui génère le message d'erreur 'Home' is not a member of 'Mvc'. Il semble que dans la vue, un espace de noms Mvc masque la classe MVC. Cela n'existe pas dans le contrôleur. Comment puis-je faire ce travail? Après avoir joué avec un peu plus, il semble que les classes ne sont pas disponibles dans la vue, peu importe leur nom. Qu'est-ce qui détermine les classes et espaces de noms disponibles dans la vue? Les classes continuent à être disponibles dans le contrôleur, indépendamment de la dénomination. Je présume qu'il doit y avoir un filtre ou une limite sur ce qui est disponible dans les vues?

Mise à jour: Je regardais juste this excellent video de Phil Haack, et ça m'a donné un indice.

J'ai besoin de modifier la section <pages> dans le fichier web.config. Maintenant la question est, puis-je obtenir cela pour utiliser une classe qui n'est pas dans un espace de noms, comme la classe MVC est par défaut, sinon je vais devoir modifier le template T4 pour le mettre dans un espace de noms et l'inclure.

+0

Avez-vous importé la classe T4Mvc dans votre vue? ou vérifiez que Views et and genrated T4mvc class est dans le même espace de noms? – swapneel

+0

@swapneel comment l'importer dans la vue? Je ne vois pas d'instructions d'importation dans les autres vues. De plus, je ne pense pas pouvoir l'importer, car la classe MVC n'est pas générée dans un espace de noms. –

+0

Vous avez raison - je l'ai juste tapé dans mon code de test. MVC.Home.GameBoard est un lien d'action n'est-ce pas? essayez MVC.Home.GameBoard() <%: Html.ActionLink ("Home", MVC.Home.Actions.Index())%> – swapneel

Répondre

0

Il semble que vous rencontriez un conflit de noms dû au fait que VB est insensible à la casse (contrairement à C#).

Essayez d'aller dans T4MVC.settings.t4 et remplacez HelpersPrefix de "MVC" par autre chose qui n'est pas en conflit (par exemple "MyMvc"). Puis changez votre code pour utiliser ce préfixe au lieu de MVC.

J'espère que c'est tout ce que ça va prendre!

+0

J'ai changé le préfixe en 'AMVC2' (ce qui n'est évidemment pas en conflit), et toujours pas de chance. –