202

IndexASP.NET MVC 4 プロジェクトを作成し、Visual Studio 2012 RC を使用して、Createアクション用のコントローラーと Razor ビューを作成しました。

アプリケーションを実行してCreateビューを参照すると、次のエラーが表示されました。

コンパイラ エラー メッセージ: CS0103: 名前 'スクリプト' は現在のコンテキストに存在しません

問題は、ビューの下部に自動的に追加された次のコードです。

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

スクリプトが存在しないのはなぜですか?

Assembly System.Web.Mvc.dll、v4.0.0.0 のベース Web ページ クラスを見ました。

次のヘルパー プロパティが利用可能であることを確認できます。

  • アヤックス
  • HTML
  • URL

しかし、スクリプトという名前はありません。

何か案は?

編集:

私の 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 がそれを生成されたビューに追加しても、まだ使用できません。

解決策を以下に示します。

最終的にアップデートで問題が解決したように見えたので、これを閉じる方法がわかりません。新しいプロジェクトを使用して、クリーン インストールを実行したことを再確認しました。しかし、私が作ったのと同じ失敗したプロジェクトは、さまざまな更新が行われ、手動の明らかな介入がないため、現在は正常に機能しています。すべての考えに感謝しますが、当時は間違いなく問題がありました;)

4

24 に答える 24

270

ここで重要なのは、追加することです

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

両方の web.config ファイルに。私のシナリオは、プロジェクトとメイン/ルート web.config の両方に System.Web.Optimization 参照がありましたが、@Scripts はまだ正しく機能しませんでした。ビューの web.config ファイルに名前空間参照を追加して、機能させる必要があります。

アップデート:

MVC 4 のリリース以降、System.Web.Optimization は廃止されました。空のソリューションから始める場合は、次の nuget パッケージをインストールする必要があります。

Install-Package Microsoft.AspNet.Web.Optimization

web.config ファイルで System.Web.Optimization を参照する必要があります。詳細については、次のトピックを参照してください。

MVC-3-converted-to-4 アプリの System.Web.Optimization への参照を追加する方法

多くの人が指摘したように、これを機能させるには、上記の手順の後に VS の再起動が必要になる場合があります。

于 2013-02-10T16:18:19.233 に答える
49

@Stylesとは、ライブラリ@Scriptsによって提供される2つの新しいヘルパーです。System.Web.Optimization名前が示すように、CSSファイルとJavaScriptファイルまたはリソースをそれぞれバンドルして縮小します。

ディレクティブまたはスルーのSystem.Web.Optimizationいずれかで名前空間を含めてみてください@usingweb.config

http://ofps.oreilly.com/titles/9781449320317/ch_ClientOptimization.html#BundlingAndMinification

アップデート

Microsoftは、バンドル/ミニファイをと呼ばれる別のパッケージに移動しましたMicrosoft.AspNet.Web.Optimization。アセンブリはnugetからダウンロードできます。

この投稿はあなたに役立ちます。

于 2012-06-08T18:47:13.430 に答える
30

私はエリアを使用していますが、この問題に直面したばかりです。名前空間をルート web.config からエリア web にコピーしました。config で動作するようになりました!!

    <add namespace="System.Web.Helpers" />
    <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" />
    <add namespace="System.Web.WebPages" />
于 2012-06-15T18:06:25.260 に答える
15

同じ問題が発生し、WinMergeを使用してこれを追跡しました。しかし、もっと調べてみると、リックには完璧なブログ投稿があることがわかりました。

概要:

  • <add namespace="System.Web.Optimization"/>両方のweb.configファイルに追加します
  • 走るInstall-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization
  • バンドルコードを更新する
  • レイアウトファイルを更新
  • 最後のステップは、他の10個のライブラリを更新することです。私はしませんでした、そしてそれはうまくいきました。したがって、これを先延ばしにすることができるように見えます(私がすでにそれらの1つ以上を更新していない限り)。:)
于 2012-06-16T02:59:11.090 に答える
11

私は同じ問題を抱えていました:

私が使用していた System.Web.Optimization のバージョンは、MVC4 RC では古くなっています。

VS 2010 のパッケージ マネージャーを使用してパッケージを更新しました。

このMSDN ブログでは、MVC 4 Beta プロジェクトを MVC 4 RC に更新する方法について Andy 氏が説明しています。パッケージを更新すると、解決するスクリプト (特に Web 最適化のもの) が得られました。

最新の System.Web.Optimization パッケージをインストールするには、パッケージ マネージャー コンソール ([ツール] -> [ライブラリ パッケージ マネージャー] -> [パッケージ マネージャー コンソール]) を使用し、次のコマンドを実行します。

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization

パッケージに含まれている System.Web.Optimization ファイルを参照に使用してください。

他のパッケージを更新するには: [ツール] メニュー -> [ライブラリ パッケージ マネージャー] -> [ソリューションの NuGet パッケージの管理]。

于 2012-07-03T07:13:26.843 に答える
5

新しいMVC4RCインターネットアプリケーションを作成して実行します。同じコードを使用するログインに移動します

 @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Login.cshtmlが機能するのは、Views \ Web.configファイル(アプリのルートバージョンではない)に含まれているものです。

<namespaces>

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

  </namespaces>

作成ビューが機能せず、ログインが機能するのはなぜですか?

于 2012-06-16T00:40:43.953 に答える
3

この問題に遭遇しましたが、コマンドの実行中に:

Install-Package -IncludePrerelease Microsoft.AspNet.Web.Optimization 

私は不可解なメッセージを受け取りました(最初のコーヒーの前に素晴らしいしゃれが大好きです):

Install-Package : 指定された暗号化アルゴリズムは、このプラットフォームではサポートされていません。

私はこれを Windows XP SP3 で実行しています (選択によるものではありません)

  • Nuget をアンインストールし、再インストールしてみてください。これができない場合は、管理者としてログインしてください。
  • [ツール] => [拡張機能マネージャー] => [Nuget Package Manager] を選択 => [アンインストール] に移動します。
  • 「Nuget」=>インストールを検索して、再度インストールします。
  • 動作しない場合は、以前の投稿で述べたように、1.7.x バージョンをインストールしてみてください (以前のバージョンを使用する必要があるという意味ではありません。正常に動作する場合は、このバグを報告して、最新バージョンのパッチ)。

これを実行したら、コマンド ラインを実行して Web.Optimization を更新できます。

これが誰かの掘り下げを救うことを願っています。

于 2012-08-08T12:22:43.487 に答える
2

書くだけ

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}
于 2012-06-08T16:14:48.120 に答える
1

Beta から RC にアップグレードしたところ、「スクリプト」が存在しないという問題に直面しました。Web 中をサーフィンし、最終的な解決策は、N40JPJ が言ったことと別の回避策です。

以下を View\Web.config にコピーします。

  <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.Optimization"/>
    <add namespace="System.Web.Helpers"/>
  </namespaces>

View\Shared_Layout.cshtml内の次の

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

それが役に立てば幸い。

于 2012-07-10T17:51:04.693 に答える
0

どうやらあなたは「Scripts」フォルダのない「Empty」プロジェクトタイプを作成しました。私のアドバイス-完全な「Scripts」フォルダを使用して「Basic」プロジェクトタイプを作成します。

すべての開発者に関して。

于 2013-02-26T07:30:20.873 に答える
0

_Layout.cshtml にコードのこの部分を追加して、MvcMusicStore でこの問題を解決します。

@if (IsSectionDefined("scripts")) 
{
       @RenderSection("scripts", required: false)
}

このコードを Edit.cshtml から削除します

 @section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

プログラムを実行すると、inshallah が動作します。

于 2014-03-14T22:11:13.020 に答える
0

プロジェクトを MVC3 から MVC4 にアップグレードするときに、非常によく似たエラーが発生しました。

コンパイラ エラー メッセージ: CS0103: The name [blah] does not exist in the current context

私の場合、いくつかの Web.Config に古いバージョン番号がありました。

  1. プロジェクトのすべての Web.Config で、System.Web.Mvc のバージョン番号を「3.0.0.0」から「4.0.0.0」に更新する必要がありました。
  2. プロジェクトのすべての Web.Config で、System.Web.WebPages、System.Web.Helpers、System.Web.Razor のすべてのバージョン番号を「1.0.0.0」から「2.0.0.0」に更新する必要がありました。

元:

<configSections>
  <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
  </sectionGroup>
</configSections>

...

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
  </assemblies>
</compilation>

各 Views ディレクトリの Web.Configs を必ず確認してください。

ASP.NET MVC 3 プロジェクトを ASP.NET MVC 4 にアップグレードする方法について詳しくは、こちらをご覧ください。

于 2013-02-13T15:37:54.910 に答える
0

それには明らかな解決策があります。後で同じ問題が発生しました。アセンブリ参照または ... とは関係ありません。複雑なページ構造がある場合、MVC 部分ビューの階層呼び出しで発生します。そのため、各ページ (おそらくマスター ページまたは部分) で各パーツを個別に呼び出し/レンダリングすると、次のコードのようにページの必要な部分が表示されなくなります。

@RenderSection("Scripts", required: false)

それは単にページに関連するセクションを見つけてレンダリングさせるだけで、失敗した場合はあなたのようなエラーメッセージが表示されます。

そのため、マスターからすべてのパーシャルまでページを (プログラム トレースのように) トレースして、依存関係を検出することをお勧めします。ひどい仕事かもしれませんが、他に選択肢はありません。

私の経験によれば、プログラミングの条件付き状況によって、正しいエラーが表示されず、問題が発生するわけではありません。

于 2013-10-18T01:21:03.250 に答える
0

何もないプロジェクトにエリアを追加した後、この問題が発生しました。それを取り除くには、ルート Views フォルダーを持つ web.config を領域の Views フォルダーにコピーするだけで、機能し始めました。

于 2013-12-06T12:48:48.380 に答える
0

このコードを持つページに入ると:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

このエラーが発生します:エラー。リクエストの処理中にエラーが発生しました。

そして、この例外は私のログに記録されています:

System.Web.HttpException (0x80004005): The controller for path '/bundles/jqueryval' was not found or does not implement IController.
   em System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
...

このページのすべてのヒントを試しましたが、どれも解決しませんでした。そのため、Packages フォルダーを調べたところ、System.Web.Optmization.dll に 2 つのバージョンがあることに気付きました。

  • Microsoft.AspNet.Web.Optimization.1.1.0 (v1.1.30515.0 - 68,7KB)
  • Microsoft.Web.Optimization.1.0.0-beta (v1.0.0.0 - 304KB)

私のプロジェクトは古いベータ版を参照していました。新しいバージョン (69KB) への参照を変更しただけで、すべてが正常に機能しました。

私はそれが誰かを助けるかもしれないと思う.

于 2013-10-18T01:00:00.937 に答える
0

最近MVC4を使い始めたとき、空のテンプレートでプロジェクトを作成しているときに上記の問題に直面しました。問題を解決する手順。

  1. 移動TOOLS--> Library Package Manager-->Packager Manager Console 以下のコマンドを貼り付けて Enter キーを押します Install-Package Microsoft.AspNet.Web.Optimization 注: インストールが成功するまで待ちます。
  2. ルート レベルの Web.Config ファイルに移動し、ページの名前空間セクションに名前空間の下に追加します。追加<namespace="System.Web.Optimization" />
  3. Views フォルダーの Web.Config に移動し、手順 2 に従います。
  4. ソリューションをビルドして実行します。

手順 1 で説明したパッケージは、System.Web.Optimization が MVC4 の空のテンプレートの既定の参照ではないなど、いくつかのシステム ライブラリをソリューション参照に追加します。

これが役立つことを願っています。ありがとうございました

于 2015-10-25T16:33:33.247 に答える
0
  1. : ビュー ページを削除します。
  2. : 名前空間 webconfig を追加します (ビュー ディレクトリに)
  3. : ビューを作成してみてください!

幸運を...

于 2013-05-23T13:25:04.153 に答える
0

私にとっては、これで問題が解決しました。NuGet パッケージ マネージャー コンソールで次のように記述します。

update-package microsoft.aspnet.mvc -reinstall
于 2015-10-14T08:08:12.103 に答える
-1

これを試して:

@section Scripts 
{
    Scripts.Render("~/bundles/jqueryval")  // <- without ampersand at the begin
}
于 2013-04-14T20:55:29.477 に答える