asp.net-mvc
2012-05-06 33 views 38 likes 
38

我無法理解我可以從ASP.NET MVC中的Url.Content()方法中獲得的好處。例如,你看到src='@Url.Content("~/Contents/Scripts/jQuery.js")'。我爲什麼要使用它?使用它可能存在什麼原因?使用像src='/scripts/jquery.js這樣簡單的舊簡單參考有什麼好處,優點等?我爲什麼要使用@ Url.Content(「〜/ blah-blah-blah」)?

更新:基於這些答案,我想知道除了處理虛擬文件夾之外是否還有其他原因使用它?因爲我還沒有見過使用過多的虛擬應用程序(當然這並不意味着它沒有被使用太多)。

+1

你從來沒有在一個網站下存在多個應用程序 –

+0

那麼,這是他們使用'@ Url.Content'的唯一原因嗎?如果是這樣,我們可以停止在單個應用程序的每個網站解決方案上使用它嗎? –

+1

對不起,延遲迴復 - 總是最好包括它。你永遠不知道網站結構將來如何變化。從技術上講,如果你_never_會改變它的位置和每個網站的一個應用程序,並且它下面沒有虛擬目錄,那麼確定你可以使用src ='/ scripts/whatever.js' –

回答

26

映射虛擬路徑是唯一的目的。 如果你不需要映射他們,並確定你的應用程序或它的文件夾不會坐在其他應用程序下,那麼它不會爲您提供任何用途。

從文檔注意,如果你不使用〜你得到的結果反正沒有變化: 「備註 如果指定的內容路徑不與波浪號(〜)字符開始,此方法返回的contentPath不變。 「

+0

謝謝@AdamTupliper。然後我簡單地從我的工具箱中刪除這個方法;)。 –

+7

另外請注意,在MVC4中有些是自動處理的,例如腳本標記,您可以指定src =「〜/ scripts/whatever.js」,剃鬚刀會自動爲您映射它,而無需使用url.content –

16

如果您的應用程序根路徑不是您的服務器的根路徑,這是有用的。 Url.Content(「〜/」)返回應用程序的根文件夾。

+0

我從未遇到過這個問題。但+1。 –

+0

從我所經歷的。當你將鼠標懸停在Visual Studio的鏈接上時,使用'〜'顯示沒有圖像內容。說找不到[路徑]。 –

32

通常,您的Web應用程序發佈爲:www.yoursite.com/。 〜字符與網站的根目錄/相匹配。

但是,如果您使用虛擬目錄www.yoursite.com/mywebapp/發佈站點,則〜字符將匹配「/ mywebapp /」。 帶有「/」字符的硬編碼Url會導致錯誤的頁面引用。

相關問題