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

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


person Amitabh    schedule 13.07.2010    source источник
comment
Вы также можете добавить псевдоним к импортированному пространству имен stackoverflow.com/questions/ 4798293 / mvc3-import-namespace /   -  person Surjit Samra    schedule 14.11.2011


Ответы (11)


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

@using MyNamespace

Для VB.Net:

@Imports Mynamespace

Взгляните на ответ @ravy amiry, если вы хотите включить пространство имен в приложение.

person Amitabh    schedule 14.07.2010
comment
Также: они не могут входить в блоки кода. (Вы получите ошибку во время выполнения) - person Dan Esparza; 24.07.2011
comment
Также вам не нужна точка с запятой. - person RPM1984; 26.07.2011
comment
привет, как использовать глобализацию в представлении в mvc, как упоминалось здесь? - person Shaiju T; 31.03.2015
comment
Это просто период плохой практики. Пожалуйста, не добавляйте это в начало ваших бритвенных страниц. Это беспорядок и т.д. Правильный способ - добавить в Views - web.config, как указывает @Javad_Amiry. - person Tom Stickel; 03.08.2015
comment
Это неплохая практика. Это абсолютно необходимая функция. web.config похож на глобальный оператор using, который делает пространство имен активным на ВСЕХ ваших страницах. Это может быть не то, что вам нужно, если у вас есть классы с одинаковыми именами в разных пространствах имен. У вас все равно будет конфликт, если вы попытаетесь использовать их в одном файле, но вы можете легко разрешить его в одном файле. Если вы вставите его в web.config, то конфликт возникнет на всех ваших страницах, использующих любой из классов. Так что называть это плохой практикой вообще бессмысленно. - person Triynko; 05.09.2015
comment
Я удивлен, что Intellisense не намекает на добавление оператора using так же, как на обычных страницах C #. - person Triynko; 05.09.2015
comment
@Triynko Возможно, это неплохая практика, основанная на достоверных примерах, которые вы предоставили, однако без этих конфликтов это определенно не лучшая практика. - person krillgar; 18.11.2016
comment
Что, если он сузится до того, чтобы вообще не использовать Imports Mynamespace и использовать его только в представлении там, где это необходимо? Например, If Mynamespace.objClass Then ... без Imports вместо If objClass Then .... с Imports.Mynamespace. - person JoshYates1980; 30.05.2017

Первый способ - использовать оператор @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/

person amiry jd    schedule 17.07.2011
comment
У меня нет этого раздела в моем web.config, мне его добавить? - person vtortola; 21.07.2011
comment
@vtortola: какой web.config? файл web.config в папке Views, а не основной файл web.config в корневой папке. Ok? - person amiry jd; 21.07.2011
comment
Я бы хотел сэкономить кому-то несколько минут на выдергивание волос и сказать, что если вы работаете в какой-то области, вы должны добавить пространство имен в Web.config в / Areas / ‹AreaName› Views /, а не / Просмотры/. - person Nick Silberstein; 11.11.2011
comment
@MatthijsWessels Нет, перезапускать VS не требуется. Просто создайте проект, и он вступит в силу. По крайней мере, я всегда так делаю. Если представление открыто, вы должны закрыть это представление перед сборкой и снова открыть его после сборки. - person amiry jd; 28.12.2012
comment
@Javad_Amiry, ага, я перестроил, но не закрыл вид. - person Matthijs Wessels; 28.12.2012
comment
Использование метода импорта web.config предотвращает загрязнение представлений слишком большим количеством деталей реализации, например, какую реализацию класса использовать. Это предполагает, что две реализации будут иметь одно и то же имя, но разные пространства имен. Вы можете использовать только тестовую реализацию, используя преобразования web.config и пространство имен blah.blah.test. - person Greg; 19.06.2015
comment
Да, это правильный путь. Не оператор Using в верхней части страницы Razor, как в ответе, выбранном OP .... - person Tom Stickel; 03.08.2015
comment
Независимо от того, что намеревалась Microsoft, я считаю кодирование через файлы конфигурации плохой практикой - конфигурации должны быть для системы «где я могу найти что-нибудь» или для простого изменения параметров. Я удивлен, что xxx.models и xxx.controllers и т. Д. Не просто работают, поскольку MVC основан на такой волшебной конфигурации. - person Gerard ONeill; 26.07.2017

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

@using MyNamespace

Для модели

@model MyModel
person Alper Şaldırak    schedule 19.01.2016
comment
Почему нет; в конце? - person FrenkyB; 08.11.2016
comment
@FrenkyB, потому что это не код C #, это код Razor. using в начале файла .cs - это ключевое слово компилятора C #. @using в начале файла .cshtml - это подсказка для механизма шаблонов Razor. - person Mark; 10.08.2017

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

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

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

person Germán    schedule 28.07.2010
comment
В RTM будет раздел web.config, но мы также хотели предоставить API для этого, потому что многие пользователи начинают отказываться от config. Итак, у нас есть оба варианта! - person Andrew Stanton-Nurse; 30.07.2010
comment
Начиная с бета-версии ASP.NET MVC 3 этот метод больше не работает. Появился новый раздел web.config, как описано здесь stackoverflow.com/questions/3875207/. Метод AddGlobalImport для импорта глобального пространства имен во все представления перемещен в этот класс System.Web.WebPages.Razor.WebPagesRazorHost. - person Germán; 08.10.2010

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

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

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

person k-dev    schedule 27.04.2011
comment
На самом деле это довольно хороший ответ, но местоположение Microsoft.WebPages.Compilation.AddGlobalImport было изменено на System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport. - person jahu; 02.07.2014
comment
Большое преимущество использования этого метода проистекает из того факта, что пространство имен будет использоваться во всех представлениях (в том числе в областях), будучи объявленным только в одном месте. - person jahu; 02.07.2014

Вы должны знать одну проблему: когда вы импортируете пространство имен через web.config в Views папку, это namespace импортируется ТОЛЬКО для представлений в этой папке. Означает, что если вы хотите импортировать namespace в просмотры области, вы также должны импортировать этот namespace в файл web.config этой области, расположенный в папке Views области;

person Community    schedule 07.09.2011

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

@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>  
   }
person Veer Jangid    schedule 11.08.2018

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

@using MyNamespace
person Abhishek Siddhu    schedule 01.07.2017

"using MyNamespace" работает в MVC3 RTM. Надеюсь это поможет.

person Howard    schedule 15.01.2011

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

@using XX.YY.ZZ
person HiteshAjudiya    schedule 03.12.2015

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

person Imran Javed    schedule 06.08.2019