Umbraco在XSLT中调用C#,解码fXML输出

时间:2012-03-30 10:56:44

标签: xml xslt umbraco umbraco-tags

我在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

1 个答案:

答案 0 :(得分:0)

您可以通过在xslt select中添加disable-output-encoding =“yes”来摆脱编码,例如<xsl:value-of select="TagHelpers:ShowAllTags()" disable-output-encoding="yes" />

但是,看起来您的标记存储为XML,而不是逗号分隔的字符串。你使用哪个标签控件?