Если вы вставляли ссылку в визуальном редакторе C1, то обратили внимание, что фактически ссылка создается такая:
~/Renderers/Page.aspx?PageId={GUID}
~/Renderers/Page.aspx?PageId={GUID}
где {GUID} - это идентификатор страницы. Однако в браузере, такая ссылка корректно заменяется на более привычную, напр.: http://www.contoso.ru/Products.aspx
Ничто вам не мешает обратиться в браузере к странице и по идентификатору:
http://www.contoso.ru/Renderers/Page.aspx?PageId={GUID}
Такая форма ссылки используется в версиях С1 до 2.1.1 (включительно). А вот в версии 2.1.3 (бета) ссылка формируется по-другому - более кратко и удобно:
~/page({GUID})
Напр:
~/page(1544E0B9-48FA-46D9-A368-3513E02A9FEB)
И в версии 2.1.3, в браузере она будет представлена, напр., так: http://www.contoso.ru/Products
И в версии 2.1.3, в браузере она будет представлена, напр., так: http://www.contoso.ru/Products
Зная эту модель вы можете - при необходимости - создавать ссылки на лету и в XSLT, и в C#.
<xsl:variable name="PageId" select="/in:inputs/in:param[@name='Page']"/>
...
<a href="~/page({$PageId})">ссылка</a>
...
<a href="~/page({$PageId})">ссылка</a>
C#:
HyperLink1.NavigateUrl = string.Format("~/page({0})", SitemapNavigator.CurrentPageId);
К тому же вы можете использовать с такими ссылками и "строки запроса" (query strings), и "сведения о пути" (PathInfo), и их комбинацию, чтобы формировать нужный URL.
Функции, которые вы можете использовать из XSLT (XSLT функций), чтобы получать значения "строк запроса" и PathInfo, находятся в пространстве имен Composite.Web.Request:
На более ранних версиях C1, будет работать ссылка типа ~/Renderers/Page.aspx?PageId={GUID} и только со "строками запроса".
- http://www.contoso.ru/Products?Id=12345678
- http://www.contoso.ru/Products?Id=12345678&Mode=Full
- http://www.contoso.ru/Products/12345678
- http://www.contoso.ru/Products/12345678?Mode=Full
<xsl:variable name="PageId" select="/in:inputs/in:param[@name='Page']"/>
<xsl:variable name="ProductId" select="/in:inputs/in:param[@name='Product']"/>
...
<a href="~/page({$PageId}/{$ProductId}?Mode=Full)">Показать полностью</a>
Функции, которые вы можете использовать из XSLT (XSLT функций), чтобы получать значения "строк запроса" и PathInfo, находятся в пространстве имен Composite.Web.Request:
- Composite.Web.Request.QueryString*
- Composite.Web.Request.PathInfo*
<function name="Composite.Web.Request.RegisterPathInfoUsage" xmlns="http://www.composite.net/ns/function/1.0" />
На более ранних версиях C1, будет работать ссылка типа ~/Renderers/Page.aspx?PageId={GUID} и только со "строками запроса".
Комментариев нет:
Отправить комментарий