我是相對較新的ASP.NET,並想知道是否有人可以揭示什麼時候我應該使用相對引用(例如../images/banner_tinga.jpg)與代字號(例如〜/ images/banner_tinga.jpg)。根據情況,您可以使用其中一種來實現相同的目標。每種機制的優缺點是什麼?相對引用的一個參數似乎是Visual Studio的設計時間不喜歡用代字號引用的資源。每當我引用一個爲什麼表示找不到的css文件。ASP.NET資源參考最佳實踐
問候, javacavaj
我是相對較新的ASP.NET,並想知道是否有人可以揭示什麼時候我應該使用相對引用(例如../images/banner_tinga.jpg)與代字號(例如〜/ images/banner_tinga.jpg)。根據情況,您可以使用其中一種來實現相同的目標。每種機制的優缺點是什麼?相對引用的一個參數似乎是Visual Studio的設計時間不喜歡用代字號引用的資源。每當我引用一個爲什麼表示找不到的css文件。ASP.NET資源參考最佳實踐
問候, javacavaj
代字號僅適用於具有runat =「server」屬性的控件,並且不適用於標準的HTML控件。所以真的沒有普遍的選擇。如果您希望使用使用波浪線與HTML控件,你必須將它們標記RUNAT =「服務器」,這樣
<img src="~/images/myimage.png" runat="server">
但它似乎並不像一個很好的做法導致它會被添加到視圖狀態。但是,你也可以這樣做
<img src="~/images/myimage.png" runat="server" EnableViewState="False">
然後,選擇變得真正普遍。
現在回答你原來的問題:
我覺得這是更好地使用「〜」波浪,因爲它給你一個參考點 - 你的網站的根目錄。如果你改變了網頁的文件夾,並把它帶到一個不同級別的相對路徑方案「../」會失敗(更高或更低一層)
希望這有助於。
爲了讓你的CSS文件,這樣做
<link href="<%= VirtualPathUtility.ToAbsolute("~/css/style.css/") %>" type="text/css">
個人而言,我現在只使用相對引用,避免了波浪。這可能會導致問題進一步惡化。儘管我無法顯示任何連接到它的參考資料,但我記得聽過/閱讀過代用引用已被廢棄的地方
嗯...我不同意@StevenMcD完全。代字號總是引用您正在開發的Web應用程序的根目錄,而相對路徑表示法則基於您在Web應用程序中的當前位置。我認爲從長遠來看,如果您重新組織或重新構建網頁的文件位置,則波浪符號將使您更容易重構,因爲您始終知道基礎路徑(〜)指的是Web應用程序。如果使用「../」符號,則不能保證。其他
一記...的符號(〜)表示法中使用ASP.NET用戶控件和masterpages時是非常方便的。將用戶控件放到Web窗體中時,該窗體可以嵌套在應用程序文件結構的任何部分。相對路徑不能保證在該場景中工作。通過使用波浪符表示法,所有路徑都可以用代碼編寫,並且可以工作,因爲它們基於Web應用程序的根。希望這可以幫助。
順便說一句,在ASP.NET中不會以任何方式不推薦使用〜。
更新:正如Cyril提到的,只有在使用ASP.NET控件時才能使用〜。純HTML元素將無法使用它。
西里爾,很好的答案,但我必須指出一件事。在ASP.NET中使用viewstate時,我沒有看到任何錯誤(或不是最佳實踐)。你只需要意識到你正在構建的應用程序類型和用戶數量。大多數情況下這不是問題。 – jwalkerjr 2008-12-31 07:52:00