あなたが通常やっていることは、いくつかのスクリプトリソースをビューバックのリストにプッシュして、テンプレートを取得してそのリストを通過させ、スクリプトインクルードを生成することです。
部分的に:
@{
ViewBag.ScriptIncludes = ViewBag.ScriptIncludes ?? new List();
ViewBag.ScriptIncludes.add("script1.js");
}
レイアウト(_Layout.cshtml)では、
@if (ViewBag.ScriptIncludes != null)
{
foreach (string url in ViewBag.ScriptIncludes)
{
<script src="@url" type="text/javascript"></script>
}
}
通常の状況では、これはあなたが非常にいい部分にスクリプトを関連付けることを可能にし、ページの読み込み時にページ上に存在する部分だけをリフレッシュするのは良い考えです。
スクリプトはページにプリロードする必要があります。 ajaxを介してスクリプトリソースを取得し、それをページに注入することで、スクリプトをリロードするべきではありません。理想的には、ajaxにhtmlをもらうことはできませんが、これを受け入れる人もいます。あなたは、より多くのスクリプトではなく、ページにhtmlを注入したいだけです。部分ビュー内のアイテムにイベントハンドラがある場合は、個々の要素ではなくコンテナにイベントハンドラをアタッチすることを検討してください。
しかし、ビューを再読み込みしているとすれば、スクリプトを頭に入れておく方が良いと思います。これにより、後で競合するスクリプトが見つからないことが保証されます。サイトは、本質的に、最初に読み込むための小さなオーバーヘッドをユーザーに負担させるアプリケーションですが、更新する必要はありません。