【问题标题】:Strange tag being generated in C#在 C# 中生成的奇怪标签
【发布时间】:2013-01-04 20:46:26
【问题描述】:

我有以下GetText() 函数,它与我的问题有关,在以下位置被调用:

myGridView.DataSource = stuff.Select(s => new
{
   //...some stuff here
   f.Text = GetText();
}
myGridView.DataBind();

GetText 如下所示:

private void string GetText()
{
    StringBuilder sb = new StringBuilder();
sb.Append("<abbr title=\"Testing\">");
    sp.Append("This is the Text that I want to display");
sb.Append("<\abbr>");
}

所以本质上,我想做的就是能够在我的网页上拥有以下 HTML:

<abbr title="Testing">This is the text that I want to display</abbr>

然而,出现了一个神秘的标签。在谷歌浏览器中,我查看了控制台,发现它看起来像这样:

<abbr title="Testing">This is the text that I want to display<bbr></abbr>

当我在sb.Append("&lt;\abbr&gt;"); 行中添加时生成了一个无关标签 当我删除该行时,此问题已修复,但我想找到更好的解决方案,因为这会使代码看起来很尴尬。

我也尝试执行以下操作,而不是多行的 sb.Appends(),但仍然显示额外的文本。

sb.Append(string.Format("<abbr title=\"testing\">{0}<\abbr>",Text));

注意:假设 Text 是一个字符串,它等于我要显示的文本。

【问题讨论】:

    标签: c# asp.net html abbr


    【解决方案1】:

    你的结束标签是错误的。应该是&lt;/abbr&gt; 而不是&lt;\abbr&gt;

    &lt;\abbr&gt; 将在&lt;bbr&gt; 中包含一个转义的a(没有任何意义)。 Chrome 显然关闭了&lt;abbr&gt; 标签。所以多余的标签实际上是&lt;/abbr&gt;而不是&lt;bbr&gt;

    【讨论】:

      【解决方案2】:

      使用

      sb.Append("</abbr>");
      

      可能\abbr 被解释为转义字符\a 后跟bbr&gt; 文本

      顺便说一句,看起来at the escape sequences on MSDN 似乎\a 是BELL 字符的转义序列。 (不,我认为您不应该听到 PC 发出哔哔声)

      【讨论】:

        【解决方案3】:

        你的方法应该是这样的

            private string GetText()
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<abbr title=\"Testing\">");
                sb.Append("This is the Text that I want to display");
                sb.Append("</abbr>");
        
                return sb.ToString();
            }
        

        "\" 是一个转义字符 :)

        【讨论】:

          【解决方案4】:

          只是一个猜测,但这是因为你的结束标记中有一个反斜杠而不是斜杠吗?

          sb.Append("<\abbr>");
          

          sb.Append("</abbr>");
          

          【讨论】:

            【解决方案5】:

            正如其他人所说,这就是问题所在:

            sb.Append("<\abbr>");
            

            ...但值得看看究竟发生了什么。

            那是附加 &lt;,然后是 U+0007(“警报”字符或铃声),然后是 bbr&gt;。如果您使用不是有效转义字符的字符(例如"&lt;\zfoo&gt;")完成此操作,那么您将收到编译时错误。在其他一些情况下,您可能已经能够在 HTML 中看到它。只是因为你选择了一个完全不可见的控制角色,所以更难看到。

            顺便说一句,我认为我曾经见过需要\a 的C# 程序。我希望它不是有效的转义字符 - 以及 \x 十六进制序列...

            【讨论】:

              猜你喜欢
              • 2015-02-22
              • 2020-10-26
              • 2016-01-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-03
              • 1970-01-01
              相关资源
              最近更新 更多