Как добавить дополнительные пространства имен в страницы Razor вместо @using объявления?

Есть ли какая-то магия, которую мне нужно использовать для получения пространств имен в элементе pages/namespaces в webconfig?

            

Вышеизложенное просто не хочет работать. Я знаю, что пространство имен отлично, потому что, когда я @using MyCustomHelpers в начало страницы, он волшебным образом работает.

Это так, что я могу заставить Html.SomeFunction() работать без необходимости ставить @using в верхней части всех моих страниц

Обновление : пожалуйста, взгляните на мой обновленный ответ, который относится к MVC 3 RC: Razor HtmlHelper Extensions (или другие пространства имен для просмотров) Не найдено

Это изменилось между MVC 3 Preview 1 и MVC 3 Beta (выпущено только сегодня). В Preview 1 Razor используется раздел конфигурации пространств имен WebForms. Однако в бета-версии есть новый раздел конфигурации, который отделен от WebForms. Вам нужно будет добавить follwing в файл web.config (или просто начать с нового проекта из шаблона):

   

Обратите внимание, что вам может потребоваться закрыть и снова открыть файл для изменений, которые будут выбраны редактором.

Обратите внимание, что есть другие изменения в том, что требуется в web.config, чтобы заставить Razor работать в бета-версии MVC3, поэтому вам лучше всего взглянуть на файл ~\View\Web.config который поставляется в шаблонах проектов Beta.

Если вы разместите свое объявление пространства имен в Web.config в корневой папке «Представления» и / или в папке «Представления» текущей области (в зависимости от того, где находится ваше представление) – она ​​должна работать должным образом.

Я нашел это 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

Для того, что стоит, другой метод состоит в том, чтобы просто поместить ваш вспомогательный class расширения в пространство имен System, которое по умолчанию уже включено механизмом просмотра. Например:

 namespace System.Web.Mvc { public static class HtmlHelper_MyExtensions { ... } } 

Таким образом, пока ссылка на библиотеку, содержащую class, все увидит. Поскольку вы расширяете class System.Web.Mvc , кажется разумным, чтобы использовать методы расширения в одном и том же пространстве имен.

Попробуйте закрыть и снова открыть представление, убедившись, что изменения были внесены в web.config в корневом представлении.

Закрытие и повторное открытие исправили мою проблему.

Глянь сюда:

Проблема с пространством имен ASP.NET MVC 4 в режиме бритвы

  • Razor / CSHTML - Любая польза от того, что у нас есть?
  • Преобразование формата DateTime с использованием бритвы
  • Сравнение ASP Engine MVC View Engine
  • Производительность бритвы ASP.NET MVC 3
  • Render Razor отображает строку в ASP.NET 5
  • @ Html.DropDownListДля того, как установить значение по умолчанию
  • Как импортировать пространство имен на странице просмотра Razor?
  • Загрузка изображения в ASP.NET MVC
  • Имя «модель» не существует в текущем контексте в MVC3
  • Бритва: декларативные HTML-помощники
  • ASP.NET MVC Razor: как визуализировать HTML-код Razor Partial View внутри действия controllerа
  • Давайте будем гением компьютера.