新しい Asp.net MVC モデルに ScriptManager 機能をいくつか追加したいと思います。
1- スクリプトの結合
2- 外部 Javascript ファイルの異なるパスの解決
3- 圧縮と Gzip 圧縮
ここに私が見つけたものがありますが、MVC アプローチの最良の方法であるかどうかはわかりません。一般に、MVC モデルで Javascript コードを処理するための適切なアプローチは何ですか?
新しい Asp.net MVC モデルに ScriptManager 機能をいくつか追加したいと思います。
1- スクリプトの結合
2- 外部 Javascript ファイルの異なるパスの解決
3- 圧縮と Gzip 圧縮
ここに私が見つけたものがありますが、MVC アプローチの最良の方法であるかどうかはわかりません。一般に、MVC モデルで Javascript コードを処理するための適切なアプローチは何ですか?
おそらく、圧縮された JS ファイルのさまざまな組み合わせを提供するさまざまなアクションを備えた新しい「スクリプト」コントローラーを作成することもできます。MVC はリソース指向のアプローチで設計されているため、つまり URL がプログラミング モデルの中心にあるため、Javascript にも単純な URI を定義してみませんか?
ビューでは、たとえば、次のようにファイルを参照できます。
<script src="http://your_domain/scripts/all"/>
これにより、'all' アクションが呼び出され、すべての圧縮スクリプト ファイルが送信されます。
もちろん、今のところ結合と圧縮をコーディングするか、Scriptmanager を内部で再利用する必要がありますが、それが可能かどうかはわかりません。
これは単なるアイデアですが、現在、マスター ページで個々の JavaScript ファイルを直接参照しています。
これを試してください:http: //www.codeplex.com/MvcScriptManager
MvcScriptManagerは、AjaxControlToolkitのToolkitScriptManagerで使用可能な特定の主要機能を現在のASP.NETMVCフレームワークに移植することを目的としています。ASP.NETMVCアプリケーションのコントロールとして使用できるようになります。
特徴
- スクリプトの組み合わせ(または連結)。MvcScriptManagerで宣言されたスクリプトは、ページがレンダリングされるときに、その場で1つのスクリプトファイル要求に結合されます。
- リリースモードでのスクリプトの縮小(またはクランチ)。縮小プロセスは、特定のスクリプトを参照する最初のリクエストで1回だけ実行されます。後続のリクエストでは、キャッシュ内のクランチされたスクリプトコンテンツが使用されます(詳細については、#5を参照してください)。クランチは、スクリプトごとに有効/無効にできます。
- スタンドアロンスクリプトファイルのローカライズされたリソースをレンダリングします。指定されている場合、ローカライズされた文字列がスクリプトに追加されます。
- スクリプトを出力するときに、構成可能なHTTP圧縮と有効期限の設定をサポートします。
- ファイル依存関係のあるスクリプトキャッシング。スクリプトファイルのコンテンツはキャッシュされるため、結合されたスクリプトファイルのレンダリングのパフォーマンスが大幅に向上します。キャッシュの依存関係は物理ファイルにリンクされているため、ファイルシステムでのスクリプトの更新は即座にキャッシュに反映されます。
- 実行環境に基づいたデバッグ/リリースモードでのレンダリングスクリプトをサポートします。
- スタンドアロンスクリプトファイルのさまざまなパスを解決します。
- 1つのページ(またはマスターページ)で複数のMvcScriptManagerをサポートします。マスターとスレーブの両方のレンダリングモードをサポートして、1つのScriptManagerで宣言されたスクリプトを別のスクリプトにロールオーバーしてレンダリングできるようにします。
- Webファームシナリオをサポート...
または、ScriptManager 自体を、ページごとに 1 回だけ、孤立した の唯一の居住者として含めるのはどう<form runat="server">
ですか?
このような:-
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true">
</asp:ScriptManager>
</form>
私のために働きます。
PS このフォーム タグが別のフォームに埋め込まれないようにする必要があります。ネストされたフォームは機能しません。
これは、ほぼ同じ問題を調査していることがわかりました: A Simple ScriptManager for ASP.NET MVC - この質問に回答した後に書かれたので、参照用に追加されました。
最初の例では、ブルート フォース ソリューションを使用します。つまり、すべてをマスター ページに貼り付けます (特に、Microsoft の CDN から jQuery をプルできるようになったため)。その後、より最適なソリューションのオプションを調査します。
MVC 4 には、バンドル ヘルパーとミニフィケーション ヘルパーが含まれるようになりました。バンドルに入れるすべてのスクリプトを定義すると、MVC がバンドル、圧縮、キャッシュ無効化などを処理します。
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification