在ASP.NET中,代字號(〜)被視爲URL中的一個標記,並將相對於應用程序根目錄的路徑作爲前綴。這是衆所周知的功能。在ASP.NET中創建自定義URL令牌(一個MOSS)
在MOSS中,還有其他的標記,例如〜sitecollection/mypath ...,其行爲方式類似,但將路徑視爲相對於網站集根。這是如何完成的?粗略搜索後,我找不到任何有關如何將這種令牌添加到.NET URL解析機制的信息。
在ASP.NET中,代字號(〜)被視爲URL中的一個標記,並將相對於應用程序根目錄的路徑作爲前綴。這是衆所周知的功能。在ASP.NET中創建自定義URL令牌(一個MOSS)
在MOSS中,還有其他的標記,例如〜sitecollection/mypath ...,其行爲方式類似,但將路徑視爲相對於網站集根。這是如何完成的?粗略搜索後,我找不到任何有關如何將這種令牌添加到.NET URL解析機制的信息。
它可能不是唯一的地方,但SPUtility.GetServerRelativeUrlFromPrefixedUrl()將解析〜site和〜sitecollection的URL。 MOSS還提供SPUrlExpressionBuilder的聲明使用:
<link runat="server" rel="stylesheet" type="text/css"
href="<% $SPUrl:~SiteCollection/Style Library/MyStyles/style.css %>" />
我不知道 - 但我敢打賭,代碼被埋在每個請求運行的SharePoint HTTPModules或HTTPHandler之一中。
我不認爲它會在那裏,因爲它不是一個通用的標記替換處理程序輸出中的任何地方。它發生在服務器控件的URL解析級別,這讓我認爲它可能在與控件構建或解析有關的類中,但我沒有在那裏找到任何東西。
FWIW,這兩個環節是相同的。這是SPUtility.GetServerRelativeUrlFromPrefixedUrl()的正確鏈接:http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.utilities.sputility.getserverrelativeurlfromprefixedurl.aspx – Abs 2009-01-13 14:54:54