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> <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\');
我正在尝试直接在 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> <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\');