Подтвердить что ты не робот

Почему команды @Scripts и @Styles не распознаются в файле макета MVC4 Razor?

Следующий файл макета MVC4 Razor загружает несколько пакетов script и css, созданных в Bundle.config.

<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
  <meta charset="utf-8" />
  <title>XXX Beta</title>
  @Scripts.Render(
  "~/bundles/bundle_jquery",
  "~/bundles/bundle_modernizr",
  "~/bundles/bundle_foundation",
  "~/bundles/bundle_jhs")
  @Styles.Render(
  "~/Content/bundle_foundation",
  "~/Content/bundle_jhs")
  @RenderSection("pageHeadContent", false)
</head>
<body>
  <div id="bodyContainer">
    @Html.Partial("Partial/_header")
    <div id="contentContainer">
      <div id="mainContentContainer">
        <div id="sidebarContainer">
          @RenderSection("sidebarContent", required: true)
        </div>
        @RenderBody()
      </div>
      <div class="clearBoth">
      </div>
    </div>
    @Html.Partial("Partial/_footer")
  </div>
</body>
</html>

Когда страница отображается, возникает следующая ошибка. По некоторым причинам команды @Scripts и @Styles не распознаются. Если я набираю "@Scripts" в файлах, Intellisense не отображает/не показывает команду. Проект ссылается на System.Web.Optimization, который используется в Bundle.config.

Что может быть причиной того, что команды @Scripts и @Styles не распознаются?


Ошибка сервера в приложении "/".

Ошибка компиляции

Описание. Произошла ошибка во время компиляции ресурса, необходимого для обслуживания этого запроса. Ознакомьтесь с приведенными ниже конкретными данными об ошибках и соответствующим образом измените исходный код.

Сообщение об ошибке компилятора: CS0103: имя "Сценарии" не существует в текущем контексте

Ошибка источника:

Строка 4: Строка 5: XXX Бета Строка 6: @Scripts.Render( Строка 7: "~/bundles/bundle_jquery", Строка 8: "~/bundles/bundle_modernizr",

Исходный файл: c:\Users\username\Documents\Visual Studio 2010\Projects\XXX\Solution\xxx.website\Views\Shared_sidebarLayout.cshtml Строка: 6

Показать подробный вывод компилятора:

Показать полный источник компиляции:

Информация о версии: Microsoft.NET Framework Версия: 4.0.30319; Версия ASP.NET: 4.0.30319.272

4b9b3361

Ответ 1

Убедитесь, что сборка System.Web.Optimization.dll указана в вашем проекте и что пространство имен <add namespace="System.Web.Optimization"/> было добавлено в ваш файл ~/Views/web.config (не ~/web.config):

<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.Optimization"/>
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
</system.web.webPages.razor>

Сборка System.Web.Optimization.dll содержится в Microsoft.AspNet.Web.Optimization NuGet, поэтому убедитесь, что она установлена ​​в вашем проекте (при создании новый проект ASP.NET MVC 4 в Visual Studio с использованием интернет-шаблона, этот NuGet автоматически добавляется в проект).

Ответ 2

Если вы используете пакеты (как в соответствующем примере), вам также может потребоваться добавить конфигурацию пакета в ваше приложение:

Добавить Bundle Config в папку App_Start:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
            "~/Scripts/jquery.validate.js",
            "~/Scripts/jquery.validate.unobtrusive.js"
            ));

        bundles.Add(new StyleBundle("~/Content/css").Include(
            "~/Content/YourStyles.css"));

#if DEBUG

        BundleTable.EnableOptimizations = false;
#else
        BundleTable.EnableOptimizations = true;
#endif
    }
}

Добавьте следующую строку в свой файл Global.asax.cs

BundleConfig.RegisterBundles(BundleTable.Bundles);

Ответ 3

В моем случае мне пришлось изменить целевую структуру проекта с 4.5 до 4.5.1.

Ответ 4

В вашем проекте есть два файла webconfig... оба из них должны иметь

<add namespace="System.Web.Optimization"/>  

Ответ 5

Как указано здесь:

  • откройте папку: Пользователи\(пользователь)\AppData\Local\Microsoft\VisualStudio (версия)

  • удалить папку: ComponentModelCache

  • перезапустить Visual Studio (ComponentModelCache воссоздается и проблема исчезает)

Ответ 6

Я нашел ответ здесь введите ссылку здесь

видимо вам нужно добавить web.optimization из корневого web.config.

Ответ 7

1. Убедитесь, что dll System.Web.Optimization перепроектирован в ссылках проекта. если нет, установите его с помощью NuGet (Консоль диспетчера пакетов):

Install-Package Microsoft.AspNet.Web.Optimization

2. Добавьте пространство имен System.Web.Optimization в файл "Views" web.config:

<system.web.webPages.razor>   
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>        
        <add namespace="System.Web.Optimization"/>       
      </namespaces>
    </pages>
</system.web.webPages.razor>

3. Если проблема не устранена, попробуйте закрыть/повторно открыть Visual Studio, чтобы обновить кэш.