route - Crear tokens de URL personalizados en ASP.NET(a la MOSS)
tag helpers asp net core (3)
En ASP.NET, la tilde (~) se trata como un token en las URL y trata las rutas prefijadas con eso en relación con la raíz de la aplicación. Esta es una funcionalidad bien conocida.
En MOSS, hay otros tokens, como ~ sitecollection / mypath ... que se comporta de forma similar, pero trata la ruta como relativa a la raíz de la colección de sitios. ¿Cómo se logra esto? Después de una búsqueda superficial, no pude encontrar ninguna información sobre cómo agregar tokens como este al mecanismo de resolución URL .NET.
No creo que esté allí ya que no es un token universal reemplazado en ningún lugar en el resultado del controlador. Sucede en el nivel de resolución de URL en un control de servidor, lo que me hace pensar que podría haber estado en alguna parte de las clases relacionadas con la construcción de control o el análisis sintáctico, pero no encontré nada allí.
No estoy seguro, pero apuesto a que el código está enterrado en uno de los HTTPModules de SharePoint o HTTPHandlers que se ejecutan para cada solicitud.
Puede que no sea el único lugar, pero SPUtility.GetServerRelativeUrlFromPrefixedUrl () analizará las URL con ~ site y ~ sitecollection. MOSS también proporciona SPUrlExpressionBuilder para uso declarativo:
<link runat="server" rel="stylesheet" type="text/css"
href="<% $SPUrl:~SiteCollection/Style Library/MyStyles/style.css %>" />