767 votes

Comment importer un espace de nom dans Razor View Page ?

Comment importer un espace de nom dans Razor View Page ?

6 votes

Vous pouvez également ajouter des alias à votre espace de noms importé stackoverflow.com/questions/4798293/mvc3-import-namespace/

878voto

Amitabh Points 14882

J'ai enfin trouvé la réponse.

@using MyNamespace

Pour VB.Net :

@Imports Mynamespace

Jetez un coup d'œil à La réponse de @ravy amiry si vous voulez inclure un espace de nom dans toute l'application.

5 votes

Aussi : Ils ne peuvent pas aller dans les blocs de code. (Vous obtiendrez une erreur d'exécution).

5 votes

Vous n'avez pas besoin non plus du point-virgule.

0 votes

Bonjour, comment utiliser la globalisation dans une vue en mvc, comme indiqué. aquí ?

408voto

Javad_Amiry Points 9003

La première façon est d'utiliser @using déclaration dans .cshtml qui importe un espace de nom dans le fichier courant uniquement, et le second :

Dans le fichier "web.config", dans " Views "de votre projet (remarquez que c'est no le web.config principal dans la racine du projet) trouvez cette section :

<system.web.webPages.razor>
  <pages pageBaseType="System.Web.Mvc.WebViewPage">
    <namespaces>
      <add namespace="System.Web.Mvc" />
      <add namespace="System.Web.Mvc.Ajax" />
      .
      .
      <!-- etc -->
    </namespaces>
  </pages>
</system.web.webPages.razor>

vous pouvez ajouter votre espace de nom personnalisé comme ceci :

<add namespace="My.Custom" />

qui ajoutera l'espace de nom à tous les fichiers .cshtml (et/ou .vbhtml) ; Vous pouvez également modifier l'héritage des vues à partir d'ici, par exemple :

<pages pageBaseType="My.Custom.MyWebViewPage">

Regards.


UPDATE : Merci à @ Nick Silberstein à son rappel sur les zones ! Il a dit :

Si vous travaillez au sein d'une zone vous devez ajouter l'élément namespace au sein de la Web.config sous /Areas/<AreaName>/Views/ plutôt que /Views/

0 votes

Je n'ai pas cette section dans mon web.config, dois-je l'ajouter ?

11 votes

@vtortola : quel web.config ? le fichier web.config dans le dossier Views, pas le web.config principal dans le dossier Root. ok ?

11 votes

J'espère éviter à quelqu'un de s'arracher les cheveux pendant quelques minutes en lui disant que si vous travaillez dans une zone, vous devez ajouter l'espace de nom dans le Web.config sous /Areas/<AreaName>Views/ plutôt que /Views/.

27voto

Germán Points 867

Dans ASP.NET MVC 3 Preview1 vous pouvez importer un espace de nom sur toutes vos vues razor avec ce code dans Global.asax.cs

Microsoft.WebPages.Compilation.CodeGeneratorSettings.AddGlobalImport("Namespace.Namespace");

J'espère que dans la RTM cela se fera par la section Web.config.

6 votes

Il y aura une section web.config dans la RTM, mais nous avons également voulu fournir une API pour le faire, car de nombreux utilisateurs commencent à s'éloigner de la configuration. Les deux options sont donc disponibles pour vous !

6 votes

Depuis ASP.NET MVC 3 Beta, cette méthode ne fonctionne plus. Il y a une nouvelle section web.config comme expliqué ici stackoverflow.com/questions/3875207/ . La méthode AddGlobalImport permettant d'importer un espace de nom global dans toutes les vues a été déplacée vers cette classe System.Web.WebPages.Razor.WebPagesRazorHost.

16voto

k-dev Points 875

J'ai trouvé ceci http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx qui explique comment ajouter un espace de nom personnalisé à toutes vos pages razor.

En gros, vous pouvez faire ça

using Microsoft.WebPages.Compilation;
public class PreApplicationStart
{
   public static void InitializeApplication()
   {
       CodeGeneratorSettings.AddGlobalImport("Custom.Namespace");
   }
}

et mettez le code suivant dans votre AssemblyInfo.cs

[assembly: PreApplicationStartMethod(typeof(PreApplicationStart), "InitializeApplication")]

la méthode InitializeApplication sera exécutée avant Application_Start dans global.asax

4 votes

Il s'agit en fait d'une assez bonne réponse, mais l'emplacement des Microsoft.WebPages.Compilation.AddGlobalImport a été changé en System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport .

2 votes

Le grand avantage d'utiliser cette méthode vient du fait que l'espace de nom sera utilisable dans toutes les vues (y compris celles des zones) tout en étant déclaré à un seul endroit.

11voto

Amit Mishra Points 247

Niveau de la page :

C#

@using namespace1

VB

@Imports namespace1

Au niveau de l'application : Défini dans web.config (Voir la réponse de @Javed)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X