Я только что создал проект ASP.NET MVC 4 и использовал Visual Studio 2012 RC для создания представлений контроллера и Razor для Index
и Create
действий.
Когда я пришел, чтобы запустить приложение и перешел к Create
представлению, была показана следующая ошибка:
Сообщение об ошибке компилятора: CS0103: имя «Сценарии» не существует в текущем контексте
Проблема заключается в следующем коде, который был автоматически добавлен в конец представления:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Почему сценариев не существует?
Я посмотрел на базовый класс веб-страниц в сборке System.Web.Mvc.dll, v4.0.0.0
Я вижу следующие доступные свойства помощника:
- Ajax
- Html
- Веб-сайт
Но ничто по имени Скрипты.
Любые идеи?
РЕДАКТИРОВАТЬ:
Мой файл Web.config выглядит следующим образом (не тронутый тем, который создал Visual Studio):
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
РЕДАКТИРОВАТЬ № 2:
Люди пишут в блоге об использовании @Scripts
помощника:
Тем не менее, после установки Visual Studio 2012 RC на новую установку Windows 8 я все еще не могу использовать его, @Scripts
хотя Visual Studio добавляет его в сгенерированный View!
Решения представлены ниже.
Я не уверен, как закрыть это, потому что в конце концов обновление, казалось, решило проблему. Я дважды проверил, что я выполнил чистую установку, используя новый проект. Но тот же неудачный проект, который я сделал, теперь отлично работает после различных обновлений и без очевидного ручного вмешательства. Спасибо за все мысли, но определенно была проблема в то время;)
источник
<system.web.webPages.razor> <pages pageBaseType=""> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> etc... </pages>
Ответы:
Ключ здесь, чтобы добавить
ОБА файлы web.config. Мой сценарий состоял в том, что у меня была ссылка System.Web.Optimization как в проекте, так и в main / root web.config, но @Scripts все еще не работал должным образом. Вам нужно добавить ссылку на пространство имен в файл Views web.config, чтобы он работал.
ОБНОВИТЬ:
С момента выхода MVC 4 System.Web.Optimization устарела. Если вы начинаете с пустого решения, вам нужно установить следующий пакет nuget:
Вам все еще нужно будет ссылаться на System.Web.Optimization в файлах web.config. Для получения дополнительной информации см эту тему:
Как добавить ссылку на приложение System.Web.Optimization для приложения MVC-3, преобразованного в 4
Как отмечали многие, для выполнения этой работы может потребоваться перезапуск VS после вышеуказанных шагов.
источник
Install-Package Microsoft.AspNet.Web.Optimization
из пустого шаблона ASP.NET MVC4, так как он не включен по умолчанию.@Styles
и@Scripts
2 новых помощника предоставленыSystem.Web.Optimization
библиотекой. Как следует из названия, они связывают и минимизируют файлы и ресурсы CSS и JavaScript соответственно.Попробуйте включить пространство имен
System.Web.Optimization
либо по@using
директиве, либо черезweb.config
http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinificationОБНОВИТЬ
Microsoft переместила пакетирование / минификацию в отдельный пакет под названием
Microsoft.AspNet.Web.Optimization
. Вы можете скачать сборку с nuget .Этот пост будет вам полезен.
источник
System.Web.Optimization
пространство имен НЕ устарело, оноSystem.Web.Optimization.dll
есть.Из вышеперечисленного пропал один маленький шаг, который я нашел в другом посте. После добавления
в
~/Views/web.config
пространствах имен закройте и снова откройте Visual Studio. Это то, что я должен был сделать, чтобы это работало.источник
Я использую области, и только что столкнулся с этой проблемой, я просто скопировал пространства имен из корневого web.config в сеть областей. конфиг и теперь работает !!
источник
У меня была та же проблема, и я использовал WinMerge, чтобы помочь мне отследить это. Но когда я исследовал это больше, я обнаружил, что у Рика есть идеальный пост в блоге .
Резюме:
<add namespace="System.Web.Optimization"/>
в оба файла web.configInstall-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
источник
У меня была такая же проблема:
Используемая мной версия System.Web.Optimization устарела для MVC4 RC.
Я обновил свои пакеты с помощью менеджера пакетов в VS 2010.
В этом блоге MSDN г-н Энди рассказывает, как обновить ваш бета-проект MVC 4 до MVC 4 RC. Обновление моих пакетов заставило Сценарии (особенно веб-оптимизацию) решить для меня:
Чтобы установить последний пакет System.Web.Optimization, используйте Консоль диспетчера пакетов (Инструменты -> Диспетчер пакетов библиотеки -> Консоль диспетчера пакетов) и выполните следующую команду:
Используйте файл System.Web.Optimization, включенный в пакет в ваших ссылках.
Чтобы обновить другие пакеты: Меню Сервис -> Диспетчер пакетов библиотеки -> Управление пакетами NuGet для решения.
источник
Создайте новое интернет-приложение MVC 4 RC и запустите его. Перейдите к логину, который использует тот же код
Что позволяет Login.cshtml работать, так это файл Views \ Web.config (не корневая версия приложения), который содержит
Почему ваш вид Create не работает, а Login -?
источник
Импортируйте System.Web.Optimization поверх вашего бритвенного представления следующим образом:
источник
Я столкнулся с этой проблемой, однако во время выполнения команды:
Я получил загадочное сообщение (должен любить отличный каламбур перед первой чашкой кофе):
Я запускаю это на Windows XP SP3 (не по выбору) и обнаружил, что должен был следовать инструкциям, опубликованным пользователем artsnob на форуме ASP.NET
После этого я мог запустить командную строку для обновления Web.Optimization.
Надеюсь, это спасет кого-то от копания.
источник
Просто пиши
источник
Я обновился с бета-версии до RC и столкнулся с проблемой «Сценарии» не существует. Посижу в интернете, и окончательное решение - это то, что сказал N40JPJ, плюс еще одно решение:
Скопируйте следующее в View \ Web.config:
и следующее внутри View \ Shared_Layout.cshtml
Надеюсь, поможет.
источник
if (IsSectionDefined())
если вы не предоставитеelse
пункт. Тот факт, что вы говорите,required: false
уже позволяет этот раздел не быть определенным, и в этом случае этот раздел будет опущен. Так что это ненужный дополнительный код.Видимо, вы создали «пустой» тип проекта без папки «Scripts». Мой совет - создайте тип проекта «Basic» с полной папкой «Scripts».
С уважением ко всем разработчикам.
источник
просто удалите / скройте код из представления создания и редактирования бритвы вашего контроллера.
источник
удачи...
источник
Еще один пот - потратили целую вечность, пытаясь решить ту же проблему - даже если она была определена в web.config для root и root для Views. Оказывается, я ошибочно добавил его в элемент
<system.web><pages><namespaces>
, а не<system.web**.webPages.razor**><pages><namespaces>
элемент.Действительно легко пропустить это!
источник
Когда я вхожу на страницу, которая имеет этот код:
Эта ошибка возникает: Ошибка. Произошла ошибка при обработке вашего запроса.
И это исключение записано в моих журналах:
Я перепробовал все советы на этой странице, и ни один из них для меня не решен. Поэтому я посмотрел на свою папку «Пакеты» и заметил, что у меня есть две версии для System.Web.Optmization.dll:
Мой проект ссылался на старую бета-версию. Я только изменил ссылку на более новую версию (69 КБ), и все работало нормально.
Я думаю, что это может кому-то помочь.
источник
Это имеет очевидное решение. У меня была такая же проблема позже. Не относится к ссылкам на сборки или .... Это происходит при иерархическом вызове частичных представлений MVC, когда у вас сложные структуры страниц. Таким образом, вызов / рендеринг каждой части отдельно на каждой странице (может быть, главной или частичной) приведет к тому, что не будут отображаться необходимые части страницы, такие как приведенный ниже код:
Это просто заставляет страницу найти и визуализировать связанный раздел, и в случае сбоя показывает вам сообщение об ошибке, подобное вам.
Поэтому я предлагаю вам проследить ваши страницы (например, трассировку программы) от мастера ко всем его частям до обнаружения зависимостей . Может быть, это ужасная работа, но здесь нет другого выбора.
Не то, чтобы, по моему опыту, некоторые условные ситуации в программировании приводили к тому, что не показывал вам правильную ошибку, вызывал проблему.
источник
У меня была эта проблема после того, как я добавил Area в проект, в котором его не было. Чтобы избавиться от него, просто скопируйте файл web.config с корневой папкой Views в папку Views и он начал работать.
источник
Я решаю эту проблему в MvcMusicStore, добавив эту часть кода в _Layout.cshtml
и удалите этот код из Edit.cshtml
Запустите программу, иншалла будет работать с вами.
источник
Для меня это решило проблему, в консоли диспетчера пакетов NuGet напишите следующее:
источник
Когда я недавно начал использовать MVC4, я столкнулся с вышеуказанной проблемой при создании проекта с пустыми шаблонами. Шаги, чтобы решить проблему.
TOOLS
->Library Package Manager
->Packager Manager Console
Вставьте приведенную ниже команду и нажмите Enter.Install-Package Microsoft.AspNet.Web.Optimization
Примечание: дождитесь успешной установки.<namespace="System.Web.Optimization" />
Пакет, упомянутый в шаге 1, добавит несколько системных библиотек в ссылки на решения, такие как System.Web. Оптимизация не является ссылкой по умолчанию для пустых шаблонов в MVC4.
Надеюсь, это поможет. Спасибо
источник
У меня была очень похожая ошибка при обновлении проекта с MVC3 до MVC4.
В моем случае у меня были устаревшие номера версий в нескольких моих Web.Configs.
Пример:
Обязательно просмотрите Web.Configs в каждом из ваших каталогов Views.
Вы можете прочитать больше об обновлении проекта ASP.NET MVC 3 до ASP.NET MVC 4 .
источник
Если вы добавили файл web.config, и он по-прежнему показывает сообщение, то вам нужно закрыть проект и снова открыть его, теперь он будет существовать, и @ Styles.Render ("") и @ Scripts.Render () будут работать нормально.
источник
Попробуй это:
источник