1

在 ASP.NET 中,波浪号 (~) 被视为 URL 中的一个标记,并将带有前缀的路径视为相对于应用程序根目录。这是众所周知的功能。

在 MOSS 中,还有其他标记,例如 ~sitecollection/mypath...,其行为方式类似,但将路径视为相对于网站集根目录。这是如何实现的?经过粗略搜索后,我找不到任何有关如何将这样的令牌添加到 .NET URL 解析机制的信息。

4

3 回答 3

5

它可能不是唯一的地方,但SPUtility.GetServerRelativeUrlFromPrefixedUrl()将使用 ~site 和 ~sitecollection 解析 URL。MOSS 还提供SPUrlExpressionBuilder用于声明性使用:

<link runat="server" rel="stylesheet" type="text/css"
      href="<% $SPUrl:~SiteCollection/Style Library/MyStyles/style.css %>" />
于 2009-01-12T19:06:29.850 回答
0

我不确定——但我敢打赌,代码隐藏在为每个请求运行的 SharePoint HTTPModules 或 HTTPHandler 之一中。

于 2008-12-03T18:22:22.370 回答
0

我不认为它会在那里,因为它不是在处理程序输出中的任何地方替换的通用令牌。它发生在服务器控件的 URL 解析级别,这让我认为它可能在与控件构建或解析相关的类中的某个位置,但我在那里没有找到任何东西。

于 2008-12-03T18:46:34.990 回答