web-dev-qa-db-ja.com

MVC4 Razorレイアウトファイルで@Scriptsおよび@Stylesコマンドが認識されないのはなぜですか?

次のMVC4 Razorレイアウトファイルは、Bundle.configで作成されたいくつかのスクリプトとcssバンドルをロードします。

<!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はコマンドを表示/表示しません。プロジェクトは、Bundle.configで使用されるSystem.Web.Optimizationを参照します。

@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

41
ChrisP

プロジェクトで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に含まれているため、プロジェクトにインストールされていることを確認してください(Visual Studioで新しいASP.NET MVC 4プロジェクトを作成する場合)インターネットテンプレートを使用すると、このNuGetが自動的にプロジェクトに追加されます)。

125
Darin Dimitrov

(問題の例のように)バンドルを使用している場合、バンドル構成をアプリに追加する必要がある場合があります。

バンドル構成を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);
4
DivineOps

プロジェクトには2つのwebconfigファイルがあります...両方とも必要です

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

前述のとおり ここ

  1. フォルダーを開きます:Users \(user)\ AppData\Local\Microsoft\VisualStudio(version)

  2. フォルダーを削除します:ComponentModelCache

  3. visual Studioを再起動します(ComponentModelCacheが再作成され、問題はなくなります)

2
DeveloperDan

私の場合、プロジェクトのターゲットフレームワークを4.5から4.5.1に変更する必要がありました。

2
Bat_Programmer

私はここで答えを見つけました リンクの説明をここに入力してください

ルートweb.configからweb.optimizationを追加する必要があるようです。

1
PinoyDev

1。 System.Web.Optimization dllがプロジェクトの参照内で再確認されていることを確認します。そうでない場合は、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>

問題が解決しない場合は、Visual Studioを閉じて再度開き、キャッシュを更新してください。

0
Davood Rokni