使用StringBuilder在C#中构造HTML的问题

时间:2009-12-28 18:53:08

标签: 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)22);
builder.Append(" >" +  obj.Name + "</a>");

在浏览器中我得到了

<a href='#' onclick=\"diagnosisSelected('id', 'text')\" >some text here</a>

因为“我得到错误。”。如何输出“?

4 个答案:

答案 0 :(得分:11)

有趣的是,有多少次我看到人们使用StringBuilder却完全忽略了它们。 StringBuilder上有另一个名为AppendFormat的方法,它可以帮助你很多:

builder.AppendFormat("<a href='#' onclick=\"foo('{0}','{1}')\">{2}</a>", var1, var2, var3);

希望这有帮助,

答案 1 :(得分:5)

使用\“

引号是特殊字符,因此必须通过在它们前面添加反斜杠来“转义”它们。

即。而不是

builder.Append((char)22); 

使用

builder.Append("\""); 

答案 2 :(得分:2)

在双引号字符串中,\是转义字符。要仅插入",您可以使用"\""

答案 3 :(得分:1)

替换以下行:

builder.Append((char)的22);

builder.Append( “\”“);