Sitecore链接url编码(XSLT)

时间:2015-01-28 12:53:44

标签: xslt sitecore

我使用以下代码生成xslt中项目的链接:

<sc:link select=".">
  <xsl:value-of select="sc:fld('SomeField',.)" />
</sc:link>

不幸的是,当项目名称中包含空格时,生成的URL包含空格,而不是%20。 我希望有一些设置我可以调整来解决这个问题。有人知道解决方案吗?

3 个答案:

答案 0 :(得分:4)

一种解决方案是使用Sitecores encodeNameReplacers。

在web.config中找到该部分并添加:

<replace mode="on" find=" " replaceWith="-" /> 

此处有更多信息:http://sitecoreninja.blogspot.co.uk/2013/03/replace-space-with-dash-in-url.html

答案 1 :(得分:0)

只需使用“翻译”功能:

<sc:link select=".">
    <xsl:value-of select="sc:fld('SomeField',translate(., ' ', '-'))"/>
</sc:link>

答案 2 :(得分:0)

回答我自己的问题,因为我比Mark更喜欢我的解决方案。

我已将一个公共静态方法public static string UrlPathEncode(string)添加到作为xsl扩展类添加的类中:

public static string UrlPathEncode(string url)
{
    return HttpUtility.UrlPathEncode(url);
}

将此添加到web.config:

<xslExtensions>
  <extension mode="on" type="MyProject.Xsl.XslHelper, MyProject"
    namespace="http://www.myproject.net/sc" singleInstance="true" />
  ..

添加对xslt文件的引用:

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:mp="http://www.myproject.net/sc"
  ..

现在您可以像这样使用UrlPathEncode函数:

<a href="{mp:UrlPathEncode(sc:path(.))}">
  <xsl:value-of select="sc:fld('SomeField',.)" />
</a>

不是一个优雅的解决方案,但它会对URL路径中不允许的每个字符进行编码。