Есть ли какая-то магия, которую мне нужно использовать, чтобы получить пространства имен в pages/namespaces
элементе в webconfig?
<pages>
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Ajax"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Routing"/>
<add namespace="System.Web.WebPages"/>
<add namespace="System.Web.Helpers"/>
<add namespace="MyCustomHelpers"/>
</namespaces>
</pages>
Вышесказанное просто не хочет работать. Я знаю, что с пространством имен все в порядке, потому что, когда я помещаю @using MyCustomHelpers
верхнюю часть страницы, оно волшебным образом работает.
Это так, чтобы я мог заставить Html.SomeFunction()
работать без необходимости помещать @using
в верхней части всех моих страниц
asp.net-mvc-3
razor
MyNameIsJob
источник
источник
<system.web.webPages.razor>
конфигурации должен уже существовать в ЭТОМ Web.Config!Ответы:
Обновление : взгляните на мой обновленный ответ, относящийся к MVC 3 RC: расширения Razor HtmlHelper (или другие пространства имен для представлений) не найдены
Это изменилось между MVC 3 Preview 1 и MVC 3 Beta (выпущено только сегодня). В Preview 1 Razor использовал раздел конфигурации пространств имен WebForms. Однако в бета-версии есть новый раздел конфигурации, который отделен от WebForms. Вам нужно будет добавить следующее в ваш файл web.config (или просто начать с нового проекта из шаблона):
Обратите внимание, что вам может потребоваться закрыть и снова открыть файл для изменений, которые будут приняты редактором.
Обратите внимание, что есть другие изменения в том, что требуется в web.config, чтобы заставить Razor работать в MVC3 Beta, поэтому лучше было бы взглянуть на
~\View\Web.config
файл, который поставляется в шаблонах проектов Beta.источник
pageBaseType="System.Web.Mvc.WebViewPage"
атрибут также требуется. Я обновил ваш ответ.Если вы поместите объявление пространства имен в
Web.config
корневую папку «Views» и / или в папку «Views» текущей области (в зависимости от того, где находится ваше представление) - оно должно работать как положено.источник
Я нашел этот http://weblogs.asp.net/mikaelsoderstrom/archive/2010/07/30/add-namespaces-with-razor.aspx, который объясняет, как добавить пользовательское пространство имен для всех ваших страниц бритвы.
В основном вы можете сделать это
и поместите следующий код в свой AssemblyInfo.cs
метод InitializeApplication будет выполнен перед Application_Start в global.asax
источник
Для чего стоит другой метод - просто поместить свой вспомогательный класс расширения в пространство имен System, которое по умолчанию уже включено механизмом представления. Например:
Таким образом, до тех пор, пока ссылка на библиотеку, содержащую класс, будет видна всем. Поскольку вы расширяете
System.Web.Mvc
класс, кажется разумно разместить методы расширения в одном и том же пространстве имен.источник
Попробуйте закрыть и снова открыть представление, убедившись, что были внесены изменения в файл web.config в корне представления.
Закрытие и повторное открытие исправили мою проблему.
Посмотреть здесь:
Проблема пространства имен ASP.NET MVC 4 в виде бритвы
источник