C# 使用StringBuilder在C中构造HTML时出现的问题#
我有一行形成html字符串的代码:C# 使用StringBuilder在C中构造HTML时出现的问题#,c#,html,escaping,C#,Html,Escaping,我有一行形成html字符串的代码: StringBuilder builder = new StringBuilder(); builder.Append("<a href='#' onclick="); builder.Append((char)22); //builder.Append('\"'); builder.Append("diagnosisSelected('" + obj.Id + "', '" +obj.Name + "')"); builder.Append((char
StringBuilder builder = new StringBuilder();
builder.Append("<a href='#' onclick=");
builder.Append((char)22); //builder.Append('\"');
builder.Append("diagnosisSelected('" + obj.Id + "', '" +obj.Name + "')");
builder.Append((char)22);
builder.Append(" >" + obj.Name + "</a>");
StringBuilder=新建StringBuilder();
生成器。追加(“”);
在浏览器中,我得到
<a href='#' onclick=\"diagnosisSelected('id', 'text')\" >some text here</a>
我得到一个错误是因为\“。我如何输出一个”?在一个双引号字符串中,
\
是一个转义字符。要仅插入一个“
,您可以在双引号字符串中使用“\”
,\
是一个转义字符。要仅插入一个“
,您可以使用“\”
使用一个\”
引号是特殊字符,因此必须在引号前面加反斜杠来“转义”
i、 e.代替
builder.Append((char)22);
使用
使用\“
引号是特殊字符,因此必须在引号前面加反斜杠来“转义”
i、 e.代替
builder.Append((char)22);
使用
有趣的是,有多少次我看到人们使用StringBuilder,却完全忽略了它们的意义。StringBuilder上还有另一个名为AppendFormat的方法,它在这里对您有很大帮助:
builder.AppendFormat("<a href='#' onclick=\"foo('{0}','{1}')\">{2}</a>", var1, var2, var3);
builder.AppendFormat(“,var1,var2,var3);
希望这能有所帮助,有趣的是,有多少次我看到人们使用StringBuilder,但却完全忽略了他们的要点。StringBuilder上还有另一个名为AppendFormat的方法,它在这里对您有很大帮助:
builder.AppendFormat("<a href='#' onclick=\"foo('{0}','{1}')\">{2}</a>", var1, var2, var3);
builder.AppendFormat(“,var1,var2,var3);
希望这有帮助,替换以下行: builder.Append((char)22) 与
builder.Append(“\”);替换以下行: builder.Append((char)22) 与
builder.Append(“\”) 我认为您的部分问题在于
“
的ASCII值为0x22(十六进制),而不是22(十进制)。diagn的值是多少。Name给出了该输出?我的第一个猜测是“text”,但这似乎与链接文本不一致。您确定此代码正在运行吗?问题在于IE:)我认为您的部分问题在于”
的ASCII值为0x22(十六进制),而不是22(十进制)。diagn的值是多少。Name给出了该输出?我的第一个猜测是“文本”,但这似乎与链接文本不一致。你确定这段代码正在运行吗?问题出在IE中:)a将字符串作为Json传递,结果仍然是\“,我在附加\”时遇到了相同的错误。在这种情况下,可能是在构建字符串和将其发送到输出HTML之间存在某种“转义”引号的情况。如果您发布用于输出文本的代码,以便人们可以尝试查看它可能被转义的位置,这可能是最好的。a将字符串作为Json传递,结果仍然是\',我在附加\'时出现了相同的错误在这种情况下,可能是在构建字符串和将其发送到输出HTML之间存在某种“转义”引号的情况。最好是发布用于输出文本的代码,以便人们可以尝试查看转义的位置。或@“”如果反斜杠在你看来和在我看来一样愚蠢。我不喜欢双引号,只是因为它让resharper很恼火:)当目标是在当前“生成器”字符串值的末尾插入格式化字符串时,AppendFormat很有用,但是如何在开头插入格式化字符串呢?我使用的是builder.insert(0,str),所以在这种情况下,如何将str添加为格式化的html字符串?或者@“”,如果反斜杠看起来像对我一样愚蠢。我不喜欢双引号,只是因为它太麻烦resharper:)当目标是在当前“builder”字符串值的末尾插入格式化字符串时,AppendFormat很有用,但是如何在开头插入格式化字符串呢?我使用的是builder.insert(0,str),所以在本例中,如何将str添加为格式化的html字符串?