Как импортировать пространство имен на странице просмотра Razor? - PullRequest
704 голосов
/ 13 июля 2010

Как импортировать пространство имен в Razor View Page?

Ответы [ 10 ]

811 голосов
/ 14 июля 2010

Наконец-то нашел ответ.

@using MyNamespace

Для VB.Net:

@Imports Mynamespace

Посмотрите на ответ @ Javad_Amiry, если хотите включить пространство имен в приложение.

387 голосов
/ 17 июля 2011

Первый способ заключается в использовании оператора @using в .cshtml файлах, который импортирует пространство имен только в текущий файл, а второй:

В файле "web.config" в каталоге "Views" вашего проекта (обратите внимание, что не основной файл web.config в корне проекта) , найдите это раздел:

<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>

Вы можете добавить свое собственное пространство имен следующим образом:

<add namespace="My.Custom" />

, который добавит пространство имен ко всем файлам .cshtml (и / или .vbhtml); Также вы можете изменить наследование видов отсюда, например:

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

Привет.


ОБНОВЛЕНИЕ: Спасибо @ Nick Silberstein за его напоминание об областях! Он сказал:

Если вы работаете в области , вы должны добавить namespace в Web.config в /Areas/<AreaName>/Views/ вместо /Views/

29 голосов
/ 19 января 2016

Для библиотеки

@using MyNamespace

Для модели

@model MyModel
27 голосов
/ 28 июля 2010

В ASP.NET MVC 3 Preview1 вы можете импортировать пространство имен для всех ваших видов бритвы с помощью этого кода в Global.asax.cs

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

Я надеюсь, что в RTM это будет сделано через раздел Web.config.

16 голосов
/ 27 апреля 2011

Я нашел это http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx, которое объясняет, как добавить пользовательское пространство имен для всех ваших страниц бритвы.

В принципе вы можете сделать это

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

и поместить следующеекод в вашем AssemblyInfo.cs

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

метод InitializeApplication будет выполнен перед Application_Start в global.asax

14 голосов
/ 08 сентября 2011

Одна проблема, которую вы должны знать, заключается в том, что при импорте пространства имен через web.config в папку Views импортируется namespace JUST для представлений в этой папке ,Означает, что если вы хотите импортировать namespace в области , вы также должны импортировать namespace в файл web.config этой области, расположенный в папке Views области;

9 голосов
/ 01 июля 2017

Вы можете попробовать это

@using MyNamespace
7 голосов
/ 11 августа 2018

Для пространства имен и библиотеки

@using NameSpace_Name

Для модели

@model Application_Name.Models.Model_Name 

Для итерации списка на странице Razor (Вы должны использовать цикл foreach для доступа к элементам списка)

@model List<Application_Name.Models.Model_Name>

@foreach (var item in Model)
   {  
          <tr>
                <td>@item.srno</td>
                <td>@item.name</td>
         </tr>  
   }
3 голосов
/ 15 января 2011

«Использование MyNamespace» работает в MVC3 RTM.Надеюсь, это поможет.

2 голосов
/ 03 декабря 2015

Я думаю, что для того, чтобы импортировать пространство имен в виде бритвы, вам просто нужно добавить следующий путь:

@using XX.YY.ZZ
...