Не знаю, происходило ли это в PR или в бета-версии, но если я создал метод расширения HtmlHelper
, он не распознается на странице с поддержкой Razor:
namespace SomeNamespace.Extensions {
public static class HtmlExtensions {
public static string Foo(this HtmlHelper html) {
return "Foo";
}
}
}
Я добавил его в <Namespaces>
раздел Web.config
:
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<!-- snip -->
<add namespace="SomeNamespace.Extensions"/>
</namespaces>
</pages>
Но он выдает ошибку компиляции при попытке просмотра страницы:
@Html.Foo()
Если я воссоздаю страницу с WebForms, она работает нормально. В чем дело?
Временное решение
Если я включу @using SomeNamespace.Extensions
в свое представление Razor, то это сработает, но я бы предпочел просто иметь его вWeb.config
asp.net-mvc-3
extension-methods
razor
html-helper
swilliams
источник
источник
Ответы:
Начиная с бета-версии, Razor использует другой раздел конфигурации для глобального определения импорта пространства имен. В вашем
Views\Web.config
файле вы должны добавить следующее:Используйте инструмент обновления MVC 3, чтобы автоматически убедиться, что у вас есть правильные значения конфигурации.
Обратите внимание, что вам может потребоваться закрыть и снова открыть файл для изменений, которые будут приняты редактором.
источник
Как следует из принятого ответа, вы можете добавить «использование» ко всем представлениям, добавив их в раздел конфигурационного файла.
Но для одного просмотра вы можете просто использовать
источник
У меня была такая же ошибка в приложении MVC 4 с использованием Razor. В попытке очистить файлы web.config я удалил два
webpages:
значения конфигурации:Как только я восстановил эти значения конфигурации, страницы компилировались бы правильно, и ошибки, касающиеся
.Partial()
метода расширения, исчезли.источник
У меня была эта проблема в VS 2015. Следующее решило это для меня:
Найдите "webpages: Version" в настройках приложения и обновите его до версии 3.0.0.0. Мой web.config имел
и я обновил его до
источник
Я обнаружил, что размещение этого раздела в моем web.config для каждой папки просмотра решает эту проблему.
источник
0.0.0.0-2.0.0.0
на1.0.0.0
), и/View/web.config
файл не переопределял это. (Кроме того, я не верю, что это нужно в каждом/View/Subfolder/
)Эта ошибка говорит о том, что у вас нет бритвенного движка, правильно связанного с вашим проектом.
Решение. В окне обозревателя решений щелкните правой кнопкой мыши свой веб-проект и выберите «Управление пакетами Nuget ...», затем установите «Microsoft ASP.NET Razor». Это обеспечит правильную установку пакета и добавит необходимые записи в ваш файл web.config.
источник
В моем случае используйте VS 2013, и он не поддерживает MVC 3 изначально (даже вы меняете ./Views/web.config): https://stackoverflow.com/a/28155567/1536197
источник
Поскольку ASP.NET MVC 3 RTM отсутствует, нет необходимости в разделе конфигурации для Razor. И эти разделы могут быть безопасно удалены.
источник