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

时间:2015-06-02 17:25:17

标签: javascript c# asp.net string escaping

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

int

此标记中的锚标记在点击时执行函数string。此函数接受一个'和两个\'参数。当我尝试添加C#字符串变量来代替字符串参数时,它将它们替换为JavaScript关键字。我尝试使用\"body { color: #fff; font-family: sans-serif; margin: 0; padding: 0; } ul, li { margin: 0; padding: 0; list-style: none; } ul { display: flex; height: 100vh; } li { flex: 1; transition: flex 300ms ease-out, color 200ms ease-out; padding: 2%; text-align: center; color: rgba(255, 255, 255,0); } li:nth-child(1) { background: #f2b635; } li:nth-child(2) { background: #f19a2a ; } li:nth-child(3) { background: #49b3e8 ; } li:nth-child(4) { background: #00a0e6; } li:nth-child(5) { background: #f25648; } li:hover { flex: 3; color: rgba(255, 255, 255, 1); } 和{{1}},但错误仍然存​​在。那么,我们可以使用任何级别的嵌套引号吗?如果没有,我该如何解决?

2 个答案:

答案 0 :(得分:1)

尝试在引号中包装实际值(参数),如下所示,

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);

这将按照您的要求呈现。 :)单引号将在浏览器中呈现后转换为双引号。 您可以在字符串前使用@,并在字符串内写"而不必转义它们。

答案 1 :(得分:0)

我想出了一种方法。我不知道为什么以前没有想到它。

我用\\'附上了JavaScript函数的字符串参数。像这样:

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

这样生成的代码将是:

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