2012-03-06 8 views
7

私はMVCには新しく、cshtmlファイルとそれぞれのjavascriptコードを保存する最良の方法を決めることはできません。私のプロジェクトのいくつかのJSコードは、グローバルに実行する必要がありますが、そのほとんどは完全に特定のビューまたは部分的なビューに結び付けられています。MVC - それぞれのjavascriptでコントロールをバンドルするのに便利ですか?

javascriptをビューに配置すると、インラインuncacheable javascriptが混乱します。中央ファイルを1つ入れると、モジュール性が失われます。

私は、MVC4には小型化機能があると聞いていますが、MVC3で行うことができるビューがあります。ビューにはjavascriptを含めてグループ化し、自動的に縮小するビューがあります。 (グループでさえ多分?)

+1

はビュービュー内の特定のグローバルファイルと、コード内で再利用されます、コードの両方を持っています。 –

+0

私は別のファイルに特定のコードコントロールを配置した場合、私は要求 – Madd0g

答えて

6

Cassetteこれは、今後のMVC4バンドルと本質的に同じです。

あなたのビューページでは、カセットのBundlesヘルパークラスを使用して、スクリプトとスタイルシートを参照できます。また

@{ 
    Bundles.Reference("Scripts/jquery.js"); 
    Bundles.Reference("Scripts/page.js"); 
    Bundles.Reference("Styles/page.css"); 
} 
<!DOCTYPE html> 
    <html> 
... 

、カセットはLessCoffeScriptをネイティブでサポートしています。 Knockout.jsBackbone.jsのようなクライアントサイドのMVCフレームワークに興味があるなら、HTMLテンプレートもサポートしています。

コンテンツをグループ化する方法を選択する必要があります。 official documentationが示唆しているように、バンドルをデプロイメント単位のとして扱うことをお勧めします。

バンドルは デプロイメント単位です。バンドル内のアセットが変更された場合は、バンドル全体をWebブラウザから再度ダウンロードする必要があります。 したがって、共有コードをバンドルにグループ化し、ページスクリプトを自分のバンドルに入れます。
1

あなたはビューごとに別々のファイルにjavascriptを置くことができます。その後_Layout.cshtmlに頭に@RenderSectionを入力します。

@section head{ 
    <script src="@Url.Content("~/ViewScripts/Order/New.js")" type="text/javascript"></script> 
} 
+0

うんの多くで終わるので、私の懸念の1つは、多くの異なるファイルには多くのHTTP呼び出しをしている、私はセクションについて知っているが、2つのパーシャルが必要なものならば同じjavascript?私は実質的にブラウザが二回それらを呼び出すしないことを知って、同じファイルに複数の呼び出しをしたくない、彼らはまだ – Madd0g

+0

私のソリューションは、唯一の「specicビュー」ビューのケースを扱うHTMLになります。私は部分的なスクリプト(まだ)の必要性を持っていないので、私は解決策を考えていません。 –

+0

nitpick、閉じる前にJSのセクションを置く ''タグではなく、私は、これはすでにグループに多くのを可能にするVisual Studioのためのいくつかの縮小アドオンの一部として存在していることを期待していた ''タグ(ブロッキングを防ぐ) – RPM1984

0

あなたがしたいと思う:

<head> 
    <script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script> 
    @RenderSection("head",false) 
</head> 

は次に、各ビューでは、あなたはヘッダーにレンダリングされるセクションを置くことができますこのようなメソッドを使用します。 Using Rails 3.1, where do you put your "page specific" javascript code?

+0

私は本当に驚いたコントローラまたはコントローラグループ – Madd0g

0

@Ander: http://www.viget.com/inspire/extending-paul-irishs-comprehensive-dom-ready-execution/

は、この記事を参照してください。スクリプトをheadタグに入れる必要がある場合は、アプローチは良いです。しかし、ページ固有のJavaScriptの場合はほとんどの場合、それが必要でないことがわかります。必要に応じて、スクリプトファイルを参照するスクリプトタグをビューに配置することができます。 Automatically bundling and minification will be supported in ASP.NET 4.5。その時までにyuicompressorをVisual Studioに統合することができます。

+0

によって一緒に少しのjsファイル、私は愚かな質問をして、人々が笑うとlmgtfyリンクを私に提供しようとしていることを思いました。私はまだそれほど私のプロジェクトにそれほどではないし、ページ固有のJavaScriptを書く必要があるたびに私を傷つける。 MVCの階層化されたコントローラ/ビューシステムは、このようなものに最適です。 – Madd0g

+0

アプリケーションのタイプによって異なります。 AJAXに多く依存する豊富なUIをお持ちになる場合は、ページ固有のjavascriptが必要です。この場合、Knouckout.jsやBackbone.jsのようなフレームワークを使用して、MVCまたはMVVMをページに移動します。 –

0

jsの分離と、ページの読み込みにまたは部分的であればイベントをバインドするために部分的に特定のスクリプトを書くためにあなたを示唆して

(私の視点で)パーシャルでスクリプトを使用することをお勧めされていないAJAXを介してロードされましたその後、成功イベントが発生します。

あなたはイベントが複数回とビューをバインドされていないことを確認することができますだけビュー

関連する問題