代码之家  ›  专栏  ›  技术社区  ›  Joe Morgan

.NET中的HTML呈现不正确

  •  1
  • Joe Morgan  · 技术社区  · 17 年前

    我正试着把绳子取下来。” <BR> “在vb.net中,并通过XSLT将其转换为HTML。但是,当HTML出现时,它看起来是这样的:

    &lt;BR&gt;
    

    我只能假设它继续进行并试图呈现它。我能把那些换成别的吗 &lt;/&gt; 回到括号里,这样我就可以得到我想要的换行符了?

    5 回复  |  直到 17 年前
        1
  •  5
  •   annakata    17 年前

    检查XSLT是否具有:

    <xsl:output method="html"/>
    

    编辑:注释解释

    默认情况下,XSLT输出为XML(1),这意味着它将转义任何重要的字符。您可以在具有该属性的特定实例中重写该属性 disable-output-escaping="yes" (引言) here )但更强大的是将输出更改为HTML的显式值,该值在全球范围内体现出相同的好处,如下所示:

    • 对于脚本和样式元素,替换任何转义字符(例如 as>)及其实际值 (分别为&和>)。
    • 对于属性,请将出现的所有>替换为>。
    • 写入空元素,如 <br> , <img> <input> 没有 结束标记或斜线。
    • 编写通过其存在来传递信息的属性 与它们的价值相反,例如 选中,最小化 形式。

    从一个坚实的IBM article 覆盖主题,StylusStudio最近的报道 here

    如果HTML输出是您想要的,那么HTML输出是您应该指定的。

    (1)实际上有一种情况是输出默认为HTML,但我不认为它是通用的,依赖它有点迟钝。

        2
  •  0
  •   Shawn    17 年前

    试着把它包起来 <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

        3
  •  0
  •   chakrit Dutchie432    17 年前

    不知道XSLT,但是……

    一个解决方法可能正在使用 HttpUtility.HtmlDecode 来自System.Web命名空间。

    using System;
    using System.Web;
    
    class Program
    {
        static void Main()
        {
            Console.WriteLine(HttpUtility.HtmlDecode("&lt;br&gt;"));
            Console.ReadKey();
        }
    }
    

        4
  •  0
  •   Joe Morgan    17 年前

    知道了!在所选答案的基础上,我在字符串上也做了类似的事情:

    htmlString = htmlString.Replace("&lt;","<")
    htmlString = htmlString.Replace("&gt;",">")
    

    不过,我认为,最终,我可能会使用 <pre> 标记以保存所有内容。

        5
  •  -1
  •   AnthonyWJones    17 年前

    弦乐“ <br> “已经是HTML,所以您可以 Response.Write("<br>") .

    但你指的是XSLT,所以我想会有一些转换正在进行。在这种情况下,转换应该将它作为一个节点插入到正确的位置。一个更好的问题可能会得到更好的答案。