0

我在 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-instance%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, 罗

4

1 回答 1

0

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

但是,您的标签似乎被存储为 XML,而不是逗号分隔的字符串。您使用的是哪个标签控件?

于 2012-04-02T15:06:40.080 回答