pages/namespaces
Dois- je utiliser une sorte de magie pour obtenir les espaces de noms dans l' élément de la webconfig?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Ce qui précède ne veut tout simplement pas fonctionner. Je sais que l'espace de noms est très bien parce que lorsque je mets le @using MyCustomHelpers
en haut de la page, cela fonctionne comme par magie.
C'est pour que je puisse faire Html.SomeFunction()
fonctionner le sans avoir à mettre @using
en haut de toutes mes pages
asp.net-mvc-3
razor
MonNomIsJob
la source
la source
<system.web.webPages.razor>
section de configuration devrait déjà exister dans THAT Web.Config!Réponses:
Mise à jour : veuillez consulter ma réponse mise à jour qui s'applique à MVC 3 RC: Razor HtmlHelper Extensions (ou autres espaces de noms pour les vues) non trouvés
Cela a changé entre MVC 3 Preview 1 et MVC 3 Beta (sorti juste aujourd'hui). Dans l'aperçu 1, Razor a utilisé la section de configuration des espaces de noms WebForms. Cependant, dans la bêta, il existe une nouvelle section de configuration distincte de celle des WebForms. Vous devrez ajouter le follwing à votre fichier web.config (ou simplement commencer avec un tout nouveau projet à partir du modèle):
Notez que vous devrez peut-être fermer et rouvrir le fichier pour que les modifications soient prises en compte par l'éditeur.
Notez qu'il y a d'autres changements à ce qui est requis dans web.config pour que Razor fonctionne dans MVC3 Beta. Il vaut donc mieux jeter un œil au
~\View\Web.config
fichier fourni dans les modèles de projet Beta.la source
pageBaseType="System.Web.Mvc.WebViewPage"
attribut est également requis. J'ai mis à jour votre réponse.Si vous placez votre déclaration d'espace de noms dans le
Web.config
dossier racine «Views» et / ou le dossier «Views» de la zone actuelle (selon l'endroit où se trouve votre vue) - cela devrait fonctionner comme prévu.la source
J'ai trouvé ce http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx qui explique comment ajouter un espace de noms personnalisé à toutes vos pages de rasoir.
Fondamentalement, vous pouvez faire ceci
et placez le code suivant dans votre AssemblyInfo.cs
la méthode InitializeApplication sera exécutée avant Application_Start dans global.asax
la source
Pour ce que cela vaut, une autre technique consiste simplement à placer votre classe d'extension d'assistance dans un espace de noms System qui est déjà inclus par le moteur de vue par défaut. Par exemple:
De cette façon, tant que la bibliothèque contenant la classe est référencée, tout la verra. Puisque vous étendez une
System.Web.Mvc
classe, il semble raisonnablement acceptable de placer les méthodes d'extension dans le même espace de noms.la source
Essayez de fermer et de rouvrir la vue après vous être assuré que les modifications ont été apportées au fichier web.config à la racine de la vue.
La fermeture et la réouverture ont résolu mon problème.
Vois ici:
Problème d'espace de noms ASP.NET MVC 4 en mode rasoir
la source