2012-04-15 58 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指令,並沒有任何好處一個.NET函數調用或帶有runat =「server」屬性標記之外? – Tommy 2012-04-15 18:11:16

回答

3

在第一種情況的Url.Content相對路徑轉換爲應用絕對路徑

在第二種情況下,字符串被認爲是文字和輸出鏈路將包含〜/在大多數情況下,它不會工作,因爲它會在當前目錄下查找名爲〜的文件夾。

但在asp.net mvc 4剃鬚刀的viewengine會看到〜/並自動爲你做Url.Content。

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

+1

正確!如果應用程序未在根級別運行(例如在IIS中,不在Cassini或IIS Express中),則需要預MVC2/razor 2,@ U​​rl.Content。正如你所提到的,MVC 4/Razor 2解決了這個問題。 – RickAndMSFT 2012-04-17 17:32:21

+0

很好的答案。 :) – vol7ron 2012-04-17 18:03:48

0

我相信還有更多的工作在第一最小量,因爲編譯器發現@Url.Content,並調用該函數。

最終結果是一樣的,但我認爲在第一步中還有2-3個更多的步驟。儘管如此,所有這些都會在[毫微秒]秒內發生。

+0

Pre MVC2/razor 2,@ U​​rl.Content在應用程序未在根級別運行時(例如在IIS中,不在Cassini或IIS Express中運行)時是必需的。剃刀2修復了這個問題。 – RickAndMSFT 2012-04-17 17:31:30

+0

這可能是真的,但它仍然是一個用於插值的服務器指令。 – vol7ron 2012-04-17 18:03:00