9

私は、Visual Studio 11を使用してプロジェクトASP.net 4、MVC4(RC)に取り組んでいます。 部分ビューをレンダリングするMVC4 Razorビューをレンダリングしようとしています。私は私の部分的なビューのためにいくつかのjavascriptが必要です。 私の部分的な見解では、スクリプトセクションの中にjavascriptを含めると、次のように読み込まれないようです。MVC4部分表示javascriptバンドリング問題

@section Scripts { 
    <script type="text/javascript"> 
     $(function() { 
      alert("test"); 
     }); 
    </script> 
} 

私は、スクリプトのセクションを削除した場合、文書準備コードが実行されるときに(私の_Layout.cshtmlページにバンドルされ、レンダリングされている)jqueryのライブラリがまだロードされていないとして、それが失敗しました。

@Scripts.Render("~/bundles/jquery") 
@RenderSection("scripts", required: false) 

誰もがこのための解決策を知っていますか、私は単にそれについて間違った道を進んでいますjqueryのライブラリをロードする

<script type="text/javascript"> 
    $(function() { 
     alert("test"); 
    }); 
</script> 

_layoutページのコード?その私の頭を壊す!

答えて

10

部分でdocument.readyでスクリプトをラップしないでください:

@section Scripts { 
    <script type="text/javascript"> 
     alert("test"); 
    </script> 
} 

ああ、とパーシャルのスクリプトを入れないでください。 Javascriptコードは、別々のjavascriptファイルに配置する必要があります。部分的にロードされたときにいくつかのjavascriptを実行したい場合は、このスクリプトを再利用可能な関数/プラグインに外部化するだけです。

+0

応答ありがとうございますが、それは私のためには機能しませんでした。ページソースを見るとdocument.readyを削除しても、javascriptは完全に欠落しています。 JavaScriptを親ビュー(部分ビューではない)に移動すると、ロードされます。しかし、私は腹側視野の負荷でそれを必要とします。 – martin

+0

最後にこれが機能するようにしました。スクリプトを使用してページを作成したとき – martin

+3

@martinの問題を発見したことは非常に面白いです。ソリューションが適切なソリューションであっても、彼は自分の答えをマークしました。 :D – Samuel

4

最後にこれが機能するようにしました。私の部分的なビューから自分のjavascriptを削除し、それを親セクション(部分的ではない)のスクリプトセクションに配置しました。このスクリプトセクションは、スキャフォールディング(Create)でビューを作成すると自動的に作成され、ページ。これを動作させるには、ページの先頭に移動しなければなりませんでした。

2

ClientDependencyはこの問題を正確に解決し、ページの末尾(または指定した場所)にロールアップして配置する部分ビューにスクリプト参照を追加することができます。また、バンドル、バージョン管理、およびミニページ化をページ単位で処理します。

スクリプト参照を確実にするオーバーヘッドは、部分的ではなく、「親」ビューにありますが、独自のスクリプトとCSSを必要とする部分的な部分がたくさんある場合はクライアントの依存関係が役立ちます。

+0

部分的なスクリプトの特定の問題を解決する、より小さくて簡単な拡張方法です: http://blog.logrythmik.com/post/A-Script-Block-Templated-Delegate-for-Inline-Scripts-in-Razor-Partials – peter3

関連する問題