Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用StringBuilder在C中构造HTML时出现的问题#_C#_Html_Escaping - Fatal编程技术网

C# 使用StringBuilder在C中构造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

我有一行形成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>");
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字符串?