、フレームワークは、(1回)Javascriptを自動的に含めることができます。 ASP.Net MVCにはそのような機能はありません。これはあなたの欠けているようなものですね。
それを行う方法は、クライアント上です。 RequireJSをhttp://requirejs.org/に見てください。これは、Javascriptの依存関係を管理するためのクライアント側ライブラリです。これはWebフォームが何をしたのか、より良いのですか?あなたのマスターレイアウトは、このようなスクリプトタグを持っています:
<script src="/Scripts/require.js" type="text/javascript" data-main="/Scripts/main"></script>
これは、あなたがすべてのページに含まのみスクリプトタグであり得ます。それ以外のものはRequireJSの必要に応じてのみ動的にロードできます。すべてのページにこれをロードするのは事実ですが、jQueryよりも小さく、あなたのために多くのことを行うので、その場所を獲得します。
@Helpers.testListBox("mylist" "1,2,3,4,5,6,7")
をし、それがHTMLをレンダリングし、jQueryのスクリプトを必要とします:
あなたの例を使用して、あなたがこのマークアップを持っているとしましょう。 require
機能は、それがすでにロードされている場合を除き、jQueryのをロードして、あなたのコードを実行します
// HTML for list box here
<script type="text/javascript>
require(['jquery'], function($) {
// Do your jQuery coding here:
$("myList").doSomething().whatever();
});
</script>
:あなたはこれをレンダリングします。 jQueryのスニペットは、HTMLヘルパーの使用ごとに1回繰り返されますが、それは大きな問題ではありません。そのコードは短くする必要があります。
RequireJSは依存関係を効果的に管理します。モジュールAとモジュールBをAに、モジュールCをBに依存させることができます。クライアントコードがモジュールCを要求すると、AとBはCとともに正しい順序で一度だけ読み込まれます各。さらに、require.jsの初期ロードを除いて、スクリプトは非同期にロードされるため、スクリプトの読み込みによってページのレンダリングが遅れることはありません。
ウェブサーバーにサイトを展開するときには、Javascriptファイル間の依存関係を調べ、1つまたは少数のファイルに結合して最小化するツールがあります。あなたのマークアップはまったく変更する必要はありません。開発中は、簡単なデバッグのために小さなモジュール式のJavascriptファイルを多数使用して作業することができます。展開すると、それらが結合され、効率が最小限に抑えられます。
これは、Webフォームフレームワークよりもはるかに優れており、完全にクライアントサイドであり、私の意見ではそれが属する場所です。
私はこれのファンではありませんが、私は人々が[スクリプトマネージャ](http://pietschsoft.com/post/2009/08/13/Simple-ScriptManager-for-ASPNET- MVC.aspx)。控えめなJavascriptははるかにクリーンなアプローチです。 –