c#中生成了奇怪的标签
本文关键字:标签 | 更新日期: 2023-09-27 17:50:47
我有以下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>
然而,出现了一个神秘的标签。在google chrome中,我看到控制台是这样的:
<abbr title="Testing">This is the text that I want to display<bbr></abbr>
当我在行sb.Append("<'abbr>");
中添加时,会生成一个无关的标记当我删除这一行时,这是固定的,但我想找到一个更好的解决方案,因为这使得代码看起来很尴尬。
我也试着这样做,而不是多行sb.Appends()
,但额外的文本仍然显示。
sb.Append(string.Format("<abbr title='"testing'">{0}<'abbr>",Text));
注意:假设Text是一个字符串,它等于我想要显示的文本。
结束标签错误。应该是</abbr>
,而不是<'abbr>
。
<'abbr>
将在<bbr>
中包含一个转义的a
(没有任何意义)。Chrome显然关闭了<abbr>
标签。所以多余的标签实际上是</abbr>
而不是<bbr>
使用
sb.Append("</abbr>");
可能'abbr
被解释为转义字符'a
后面跟着bbr>
文本
顺便说一下,看看MSDN上的转义序列,似乎'a
是BELL字符的转义序列。(不,我不认为你应该听到哔哔声从你的电脑)
你的方法应该是这样的
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();
}
"'"是转义字符:)
只是猜测,但这是因为你有一个反斜杠而不是斜杠在你的结束标签?
sb.Append("<'abbr>");
和
sb.Append("</abbr>");
正如其他人所说,这就是问题所在:
sb.Append("<'abbr>");
…但是值得看看到底发生了什么。
这是附加<
,然后是U+0007("警报"字符,或铃声),然后是bbr>
。如果您使用不是有效转义字符(例如"<'zfoo>"
)的字符完成此操作,则会收到编译时错误。在其他一些情况下,您可能已经能够在HTML中看到它。只是因为你选择了一个完全不可见的控制字符,所以很难看到。
'a
的c#程序。我希望它不是一个有效的转义字符-随着'x
十六进制序列…