あなたが通常やっていることは、いくつかのスクリプトリソースをビューバックのリストにプッシュして、テンプレートを取得してそのリストを通過させ、スクリプトインクルードを生成することです。部分的に
:これは、あなたはかなり良いしている部分と、スクリプトを関連付けることができ、良いです通常の状況ではレイアウトで
@{
ViewBag.ScriptIncludes = ViewBag.ScriptIncludes ?? new List<string>();
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を注入したいだけです。部分ビュー内のアイテムにイベントハンドラがある場合は、個々の要素ではなくコンテナにイベントハンドラをアタッチすることを検討してください。
しかし、任意のビューを再読み込みしている場合は、スクリプトを頭に入れておく方が良いと思います。これにより、後で競合するスクリプトが見つからないことが保証されます。サイトは、本質的に、最初に読み込むための小さなオーバーヘッドをユーザーに負担させるアプリケーションですが、更新する必要はありません。
問題はすべての私のウェブサイトがAJAXにあることです。ほぼすべてのビューが読み込まれます。 –
とにかくすべてをリロードしている場合は、何のポイントですか?この前にページにあなたのリソースをあらかじめロードしておけば、意味があるかもしれません。あなたはJavaScriptの状態に本当に注意する必要があります。おそらく、すべてのスクリプトが頭の中に含まれているように(より良いが単一のjsファイル)、あなたのサイトのどこかに矛盾した状態がないことを知るように、あなたのサイトをコードする方が良いでしょう。また、戻るボタンを壊さないようにしてください;) –
私は、動的スクリプトの読み込みは悪くないと言及すべきですが、一部のスクリプトで部分的なビューを取得するよりも構造化されたメカニズムが必要です。各ページのjsonデータを取得してクライアント上でレンダリングし、JavaScriptモジュールを非同期にロードする方が、 –