Создание пользовательских токенов URL в ASP.NET (а-ля МОСС)

В ASP.NET тильда (~) обрабатывается как токен в URL-адресах и обрабатывает пути с этим префиксом как относительные к корню приложения. Это известный функционал.

В MOSS есть и другие токены, например ~ sitecollection / mypath ... который ведет себя аналогичным образом, но обрабатывает путь относительно корня семейства сайтов. Как это достигается? После беглого поиска я не смог найти никакой информации о том, как добавить такие токены в механизм разрешения URL-адресов .NET.


person Rex M    schedule 03.12.2008    source источник


Ответы (3)


Возможно, это не единственное место, но SPUtility .GetServerRelativeUrlFromPrefixedUrl () будет анализировать URL-адреса с помощью ~ site и ~ sitecollection. MOSS также предоставляет SPUrlExpressionBuilder для декларативного использовать:

<link runat="server" rel="stylesheet" type="text/css"
      href="<% $SPUrl:~SiteCollection/Style Library/MyStyles/style.css %>" />
person dahlbyk    schedule 12.01.2009
comment
FWIW, обе эти ссылки одинаковы. Это правильная ссылка для SPUtility.GetServerRelativeUrlFromPrefixedUrl (): msdn.microsoft.com/en-us/library/ - person Abs; 13.01.2009

Я не знаю наверняка, но готов поспорить, что код скрыт в одном из HTTPModules или HTTPHandler'ов SharePoint, которые запускаются для каждого запроса.

person Greg Hurlman    schedule 03.12.2008

Я не думаю, что он там будет, поскольку это не универсальный токен, заменяемый где-либо в выводе обработчика. Это происходит на уровне разрешения URL-адресов в серверном элементе управления, что заставляет меня думать, что это могло быть где-то в классах, связанных с построением или синтаксическим анализом элементов управления, но я ничего там не нашел.

person Rex M    schedule 03.12.2008