我在Umbraco 4.7.1中从XSLT调用C#函数。 我的函数是返回当前节点上“tag”属性的值,问题是我的输出是编码的。
在xsltExtensions.config中,我添加了一个程序集扩展。
在我的XSLT中,我得到了我的函数值
<xsl:value-of select="TagHelpers:ShowAllTags()" />
我的C#功能:
public string ShowAllTags()
{
var node = new DynamicNode(Node.GetCurrent());
var html = new StringBuilder();
if (node.HasProperty("tags"))
{
var tagList = node.GetPropertyValue("tags");
if(tagList.Length > 0)
{
foreach (var tag in tagList)
{
html.Append(HttpUtility.HtmlEncode(tag));
}
}
}
return html.ToString();
我的输出如下:
%3C%3fxml +版本%3D%221.0%22%3F%3E%0D 0A%%3cClientValue +的xmlns%3axsd%3D%22http%3A%2F%2fwww.w3.org%2f2001%2fXMLSchema%22 + XMLNS%3axsi%3D%22http%3A%2F%2fwww.w3.org%2f2001%2fXMLSchema实例%22%3E%0D 0A%++%3cTags%3E%0D 0A%++++%3cstring%3efritidsjob%3C%2fstring%3E% 0D%0A ++++%3cstring%3elo%3C%2fstring%3E%0D%0A ++++%3cstring%3ejobpatrulje%3C%2fstring%3E%0D%0A ++%3C%2fTags%3E%0D%0A ++%3cGroupName%3edefault%3C%2fGroupName%图3e%0D 0A%%3C%2fClientValue%3E
但应该是:
fritidsjob,jobpatrulje,lo
答案 0 :(得分:0)
您可以通过在xslt select中添加disable-output-encoding =“yes”来摆脱编码,例如<xsl:value-of select="TagHelpers:ShowAllTags()" disable-output-encoding="yes" />
但是,看起来您的标记存储为XML,而不是逗号分隔的字符串。你使用哪个标签控件?