web-dev-qa-db-ja.com

MVC 4 @Scripts「存在しない」

ASP.NET MVC 4プロジェクトを作成し、Visual Studio 2012 RCを使用してIndexおよびCreateアクション用のコントローラビューとカミソリビューを作成しました。

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

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

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

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

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

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

次のようなヘルパープロパティが利用可能です。

  • Ajax
  • HTML
  • URL

しかし、Scriptsという名前はありません。

何か案は?

編集:

私の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を使用できません。

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

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

199

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

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

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

更新:

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

Install-Package Microsoft.AspNet.Web.Optimization

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

MVC-3-to-4アプリケーションのSystem.Web.Optimizationへの参照を追加する方法

多くの人が指摘したように、VSの再起動は、この作業を行うために上記の手順の後に必要となる可能性があります。

265
Marko

私は別の投稿で見つけた上記から欠けている一つの小さなステップがありました。追加した後

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

あなたの~/Views/web.config名前空間に対して、Visual Studioを閉じて再度開く。これは私がこれをうまく動かすためにしなければならなかったことである。

48
Ben

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

System.Web.Optimizationディレクティブまたは@usingを介してネームスペースweb.configを含めてみてください

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

UPDATE

Microsoftは、バンドル/縮小をMicrosoft.AspNet.Web.Optimizationという別のパッケージに移動しました。アセンブリは nuget からダウンロードできます。

これ post はあなたに役立つでしょう。

48
VJAI

私は地域を使用していて、この問題に遭遇したところです。名前空間をルートのweb.configから地域のWebにコピーしました。設定し、それは今動作します!

    <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" />
30
N40JPJ

私は同じ問題を抱えていたので、WinMergeを使用してこれを突き止めました。しかし、もっと詳しく調べてみると、Rickには完璧な ブログ記事 があることがわかりました。

概要:

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

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

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

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

これで MSDNブログ 、Andy氏がMVC 4 BetaプロジェクトをMVC 4 RCに更新する方法について話しています。私のパッケージをアップデートすることは私にとって解決するべきスクリプト(特にウェブ最適化スクリプト)を得ました:

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

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

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

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

11
WWC

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

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

Login.cshtmlを機能させるものは、Views\Web.configファイル(アプリケーションのルートバージョンではありません)に含まれています。

<namespaces>

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

  </namespaces>

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

5
RickAndMSFT

以下のように、かみそりビューの上にSystem.Web.Optimizationをインポートします。

@using System.Web.Optimization
5
xAditya3393

私はこの問題に遭遇しました、しかし、コマンドを実行している間:

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

私は不可解なメッセージを受け取りました(最初の一杯のコーヒーの前に大当たりが大好きです):

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

私はこれをWindows XP SP3(選択によるものではありません)で実行していますが、私が見つけたのはユーザーの投稿artsnobに従う必要があるということです。 ASP.NETフォーラム

  • Nugetをアンインストールしてから再インストールしてください。これができない場合は、管理者としてログインしてください。
  • ツール=>エクステンションマネージャ=>「Nuget Package Manager」を選択=>アンインストール
  • "Nuget" => Installを検索して、再度インストールしてください。
  • うまくいかなかった場合は、前回の記事で述べた1.7.xバージョンをインストールしてみてください(うまく機能した場合は、以前のバージョンを使用する必要があるという意味ではありません)。最新版のパッチ).

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

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

3
Jake1164

書くだけ

@section Scripts{
    <script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/bundles/jqueryval")"></script>
}
2
archil
  1. :ネームスペースWeb設定を追加します(ビューディレクトリ内).
  2. :ビューを作成してみてください!
  3. がんばろう...

.

1
Esat

私はベータ版からRC版にアップグレードし、「スクリプト」は存在しない問題に直面しました。 N40JPJが言ったことに加えて、もう1つの成果がWeb上でサーフィンされた最終的な解決策です。

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)
}

それが役に立てば幸い。

1
Mohsen Afshin

私はこのコードを持っているページに入ると:

@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)
...

私はこのページですべての助言を試みました、そして、それらのどれも私のために解決しませんでした。だから私は自分のパッケージフォルダを見て、私は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)に変更しただけで、すべてうまくいきました。

誰かに役立つかもしれないと思います。

0
rkawano

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

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

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

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

Inshallahプログラムがあなたと一緒に動きます。

もう1つは、同じ問題を解決しようとしていた時代に費やされたものです - たとえそれがrootのweb.configとViewsのルートで定義されていたとしても。結局、<system.web><pages><namespaces>要素ではなく<system.web**.webPages.razor**><pages><namespaces>に誤って追加したのです。

それを見逃すことは本当に簡単です!

0
PoorbandTony

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

0
Stefano.net

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

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

手順1で説明したパッケージは、System.Web.Optimizationのようなソリューション参照にシステムライブラリをほとんど追加しません。MVC4の空のテンプレートの既定の参照ではありません。

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

0
Radha G

コントローラの作成と編集のかみそりビューからコードを削除/非表示にするだけです。

 @section Scripts {  

   @Scripts.Render("~/bundles/jqueryval")  
 }  
0
atik sarker

どうやらあなたは 'Scripts'フォルダなしで 'Empty'プロジェクトタイプを作成しました。私のアドバイスは、「Scripts」フォルダ全体を含む「Basic」プロジェクトタイプを作成することです。

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

0
Kammer

Web.configに追加してもメッセージが表示される場合は、プロジェクトを閉じて再度開く必要があります。これで、プロジェクトは存在し、@ Styles.Render( "")と@ Scripts.Render()は正常に機能します。

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

@RenderSection("Scripts", required: false)

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

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

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

私にとってはこれで問題は解決しました、NuGetパッケージマネージャコンソールで以下のように書いてください。

update-package Microsoft.aspnet.mvc -reinstall
0
Adam

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

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

私の場合は、いくつかの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.Configを確認してください。

ASP.NET MVC 3プロジェクトからASP.NET MVC 4へのアップグレード についてもっと読むことができます。

0
Mac