C# 中嵌套引号的可能级别是多少?

What are the possible levels of nested quotes in C#?

我正在尝试直接在 ASP.NET 网页上编写 Javascript 变量赋值代码。

Response.Write("<script>itHtml = '");
Response.Write("<div id=\"pop_ctrl\">Select</div><ul id=\"demo_ul\">");
foreach (Article a in arts)
{
    Response.Write("<li class=\"demo_li\"><a onclick=\"ShowArticleCard(" + a.Id + ",\'" + a.User + "\',\'" + a.DateString + "\'); return false\"><div>" + it.User + "</div>&nbsp;&nbsp;<div>" + it.Title + "</div></a></li>");
}
Response.Write("</ul>");
Response.Write("';</script>");

此标记中的锚标记在点击时执行函数 ShowArticleCard()。此函数接受一个 int 和两个 string 参数。当我尝试添加 C# 字符串变量来代替字符串参数时,它会像 JavaScript 关键字一样替换它们。我尝试使用 '\'\",但错误仍然存​​在。那么,我们可以使用任何级别的嵌套引号吗?如果不是,我该如何解决?

尝试将实际值(参数)括在引号中,像这样,

onclick=\"ShowArticleCard(" + a.Id + ",'" + 
          a.User + "','" + a.DateString + "'); // Remaining code

已更改

我已经从 int 类型参数中删除了单引号,并从字符串类型中删除了转义斜线。它们可以简单地表示为,'。现在当代码 运行 时,它将被视为一个字符串。否则(如果值为数字)则忽略这些引号并按原样输入。只有字符串类型的数据需要用 '" 包裹。 在JavaScript中它们是相同的。在C#中,'"有不同的含义,你懂的

提示:另外,如果你正在为客户端渲染编写一些东西,比如 ASP.NET,你可以很容易写成,

string.Format("<a href='{0}' onclick='func({1})'>My Link</a>",
               hyperlink, param);

这将按您希望的方式呈现。 :) 一旦在您的浏览器中呈现,单引号将转换为双引号。 或者可以在字符串前使用@,在字符串里面写",不用转义。

我想出了一个办法。我不知道为什么它以前没有出现在我的脑海中。

我用 \' 将 JavaScript 函数的字符串参数括起来。像这样:

ShowArticleCard(" + a.Id + ",\'" + a.User + "\',\'" + a.DateString + "\');

因此结果代码将是:

ShowArticleCard(someid,\'someUser\',\'someDateString\');