Comment importer un espace de noms dans la page Razor View?
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.
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/
Pour la bibliothèque
@using MyNamespace
Pour modèle
@model MyModel
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.
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
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;
Tu peux essayer ça
@using MyNamespace
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>
}
"using MyNamespace" fonctionne dans MVC3 RTM. J'espère que cela t'aides.
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
Selon votre besoin, vous pouvez utiliser l'une des méthodes suivantes:
si nécessaire dans toutes les vues suivantes, ajoutez "using your.domainName;" dans _ViewStart.cshtml. Vous trouverez plus d'informations à ce sujet dans: Où et comment le fichier de mise en page _ViewStart.cshtml est-il lié?
Ou ajoutez une référence d'assembly dans View web.config comme décrit par d'autres expliqués dans: Comment implémentez-vous un @ en utilisant toutes les vues dans Asp.Net MVC 3?