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

Cof*_*ode 1 html c# 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>");
Run Code Online (Sandbox Code Playgroud)

在我得到的浏览器中

<a href='#' onclick=\"diagnosisSelected('id', 'text')\" >some text here</a>
Run Code Online (Sandbox Code Playgroud)

因为"我得到一个错误".我怎么能输出一个?

x0n*_*x0n 11

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

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

希望这可以帮助,

  • 或@"<a href='#' onclick=""foo('{0}','{1}')""> {2} </a>"如果反斜杠看起来像你一样傻对我来说. (2认同)

Jas*_*ams 5

用一个 \"

引号是特殊字符,因此必须通过在它们前面加一个反斜杠来"转义"它们.

即代替

builder.Append((char)22); 
Run Code Online (Sandbox Code Playgroud)

使用

builder.Append("\""); 
Run Code Online (Sandbox Code Playgroud)