2012-04-15 7 views
2

どちらも同じファイルを含んでいます。両方の作品は、しかし、他のいずれかを優位に有利な点はありますか?これらのjavascriptインクルード定義には違いがありますか

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script> 

<script type="text/javascript" src="~/Scripts/jquery.validate.unobtrusive.min.js"></script> 
+0

私は「〜/」構文は、.NETディレクティブであるとにrunat =「server」属性と.NET関数呼び出しまたはタグのない良い外を行わないと思いましたか? – Tommy

答えて

3

は、文字列リテラルと出力リンクが〜/含有するであろうと考えられる第二の場合には、アプリケーションの絶対パス

への相対パスに変換します。これは、現在のディレクトリの下の〜という名前のフォルダを探すため、ほとんどの場合動作しません。

しかし、asp.net mvc 4では、かみそりビューエンジンが〜/が表示され、自動的にUrl.Contentが実行されます。

http://www.davidhayden.me/blog/asp.net-mvc-4-the-new-tilde-slash-feature-in-razor-2

+1

正解! Pre MVC2/razor 2、@ Url.Contentは、アプリケーションがルートレベルで実行されなかった場合に必要です(たとえばIISではCassiniやIIS Expressではなく)。ご参考までに、MVC 4/Razor 2ではこれを修正しています。 – RickAndMSFT

+0

良い答え。 :) – vol7ron

0

私は、コンパイラが@Url.Contentを発見し、その機能を呼び出すため、最初でより多くの仕事の最小限の量は、そこにあると信じています。

最終結果は同じですが、私は最初に2〜3つ多くのステップがあると思います。しかし、それはすべて[ミリ]秒で起こります。最初のケースUrl.Contentに

+0

Pre MVC2/razor 2、@ Url.Contentは、アプリケーションがルートレベルで実行されなかった場合に必要です(たとえば、IISでは、CassiniまたはIIS Expressでは実行されません)。剃刀2はこれを修正します。 – RickAndMSFT

+0

これは当てはまりますが、依然として補間に使用されるサーバー指令です。 – vol7ron

関連する問題