Как импортировать пространство имен на страницу просмотра Razor?
Как импортировать пространство имен на страницу просмотра Razor?
Ответы (11)
Наконец нашел ответ.
@using MyNamespace
Для VB.Net:
@Imports Mynamespace
Взгляните на ответ @ravy amiry, если вы хотите включить пространство имен в приложение.
Первый способ - использовать оператор @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/
blah.blah.test
.
- person Greg; 19.06.2015
Для библиотеки
@using MyNamespace
Для модели
@model MyModel
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.
Я нашел этот 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
Microsoft.WebPages.Compilation.AddGlobalImport
было изменено на System.Web.WebPages.Razor.WebCodeRazorHost.AddGlobalImport
.
- person jahu; 02.07.2014
Вы должны знать одну проблему: когда вы импортируете пространство имен через web.config
в Views
папку, это namespace
импортируется ТОЛЬКО для представлений в этой папке. Означает, что если вы хотите импортировать namespace
в просмотры области, вы также должны импортировать этот namespace
в файл web.config
этой области, расположенный в папке Views
области;
Для пространства имен и библиотеки
@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>
}
Вы можете попробовать это
@using MyNamespace
"using MyNamespace" работает в MVC3 RTM. Надеюсь это поможет.
Я думаю, чтобы импортировать пространство имен в режиме бритвы, вам просто нужно добавить способ ниже:
@using XX.YY.ZZ
В зависимости от ваших потребностей вы можете использовать один из следующих методов:
- В первой строке / ах представления добавьте "using your.domainName;" (если это требуется только в конкретном виде)
если требуется во всех последующих представлениях, добавьте "using your.domainName;" в _ViewStart.cshtml. Вы можете найти больше об этом в: Где и как связан ли файл макета _ViewStart.cshtml?
Или добавьте ссылку на сборку в View web.config, как описано другими, объясненными в: Как реализовать @using во всех представлениях в Asp.Net MVC 3?