web-dev-qa-db-fra.com

Comment importer un espace de noms dans la page Razor View?

Comment importer un espace de noms dans la page Razor View?

711
Amitabh

Enfin trouvé la réponse.

@using MyNamespace

Pour VB.Net:

@Imports Mynamespace

Jetez un coup d'œil à la réponse de @ Javad_Amiry si vous souhaitez inclure un espace-noms dans l'application.

818
Amitabh

La première consiste à utiliser l'instruction @using dans les fichiers .cshtml, qui importe un espace de noms uniquement dans le fichier actuel, et la seconde:

Dans le fichier "web.config" du répertoire "Views" de votre projet (notez que c'est et non le site Web principal .config à 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 noms personnalisé comme ceci:

<add namespace="My.Custom" />

cela ajoutera l'espace de noms à tous les fichiers .cshtml (et/ou .vbhtml); aussi vous pouvez changer l'héritage des vues à partir d'ici, comme:

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

Cordialement.


PDATE: Merci à @Nick Silberstein pour son rappel concernant les zones! Il a dit:

Si vous travaillez dans un area, vous devez ajouter le namespace dans le Web.config sous /Areas/<AreaName>/Views/ plutôt que /Views/

388
javad amiry

Pour la bibliothèque

@using MyNamespace

Pour modèle

@model MyModel
29
Alper Şaldırak

Dans ASP.NET MVC 3 Preview1, vous pouvez importer un espace-noms sur toutes vos vues rasoir avec ce code dans Global.asax.cs.

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

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

27
Germán

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é à tous vos pages de rasoir.

Fondamentalement, vous pouvez faire cela

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

16
k-dev

Un problème que vous devez savoir est que, lorsque vous importez un espace-noms via le dossier web.config dans Views, namespace est importé JUSTE pour les vues dans lesquelles - dossier. Cela signifie que si vous voulez importer un namespace dans un vues de la zone, vous devez également importer ce namespace dans le fichier web.config de cette zone, situé dans la zone Views dossier;

14
user933765

Tu peux essayer ça

@using MyNamespace
9
Abhishek Siddhu

Pour l'espace de noms et la bibliothèque

@using NameSpace_Name

Pour modèle

@model Application_Name.Models.Model_Name 

Pour Itérer la liste sur la page Razor (vous devez utiliser une boucle foreach pour accéder aux éléments de la liste)

@model List<Application_Name.Models.Model_Name>

@foreach (var item in Model)
   {  
          <tr>
                <td>@item.srno</td>
                <td>@item.name</td>
         </tr>  
   }
8
Veer Jangid

"using MyNamespace" fonctionne dans MVC3 RTM. J'espère que cela t'aides.

3
Howard

Je pense que pour importer l'espace de noms dans la vue rasoir, il vous suffit d'ajouter ce qui suit:

@using XX.YY.ZZ
2
HiteshAjudiya

Selon votre besoin, vous pouvez utiliser l'une des méthodes suivantes:

0
Imran Javed