在ASP.NET中,代字号(〜)被视为URL中的标记,并将前缀为路径的路径视为相对于应用程序根目录。这是众所周知的功能。
在MOSS中,还有其他令牌,例如~sitecollection / mypath ...其行为方式类似,但将路径视为相对于网站集根目录。这是如何完成的?在粗略搜索之后,我找不到任何关于如何将这样的标记添加到.NET URL解析机制的信息。
答案 0 :(得分:5)
它可能不是唯一的地方,但SPUtility.GetServerRelativeUrlFromPrefixedUrl()会使用~site和~sitecollection解析网址。 MOSS还提供SPUrlExpressionBuilder用于声明性使用:
<link runat="server" rel="stylesheet" type="text/css"
href="<% $SPUrl:~SiteCollection/Style Library/MyStyles/style.css %>" />
答案 1 :(得分:0)
我不确定 - 但我敢打赌代码隐藏在为每个请求运行的SharePoint HTTPModules或HTTPHandler之一。
答案 2 :(得分:0)
我不认为它会在那里,因为它不是在处理程序的输出中的任何地方替换的通用令牌。它发生在服务器控件中的URL解析级别,这让我觉得它可能在与控件构建或解析相关的类中的某个位置,但我没有在那里找到任何东西。