我正在維護一個ASP.NET Web窗體網站(我的意思是網站,它不是一個web應用程序),並且一些靜態鏈接被破壞,因爲它們正在託管它與一個虛擬目錄。獲取包含虛擬目錄的URL?
http://www.somewhere.com/MyApp
所以,我開始尋找一種方法來獲得絕對URL給出某個頁面的虛擬路徑。而且我發現,提到你可以採取這樣的鏈接的文章:
<a href="/ContactUs.aspx">Contact Us</a>
,做這樣的事情:
<a href="<%= System.Web.VirtualPathUtility.ToAbsolute("/ContactUs.aspx") %>">Contact Us</a>
,但是這還沒有針對ASP.NET開發本地工作(即服務器),因爲我的本地路徑可能是這樣的:
http://localhost:7766/MyApp
而是由VirtualPathUtility
產生的路徑是這樣的:
http://localhost:7766/ContactUs.aspx
所以,我決定將它部署到我的本地IIS實例,看看它是如何工作。結果是一樣的。本地IIS路徑爲:
http://localhost/MyApp
但路徑與我們聯繫頁面:
http://localhost/ContactUs.aspx
在最後一個順利的相處,沒有在應用程序看起來一個鏈接像這樣:
<asp:HyperLink id="ContactUsLink"
runat="server"
Enabled="true"
NavigateUrl="/ContactUs.aspx"
Text="Contact Us">
</asp:HyperLink>
我之所以說這是一個混亂的原因是因爲我知道內聯代碼(與上述示例類似)不適用於服務器控件。實際上,它拋出一個編譯器錯誤:
Server tags cannot contain <% ... %> constructs.
所以看起來我清楚地向下移動了錯誤的道路,我需要一些幫助。我期待着你的回答。
〜是必不可少的! – stannius 2017-04-25 20:12:36