繁体   English   中英

引用C#变量时如何处理JavaScript中的双引号

[英]How to deal with double quotes in JavaScript when referencing a C# variable

我需要调用一个JavaScript函数,该函数需要一个字符串变量,该字符串变量中可能带有双引号。 这是将变量传递到JavaScript函数的方法:

onclick="copyDescription('<%# Eval("Description") %>');"

问题在于该函数永远不会触发,因为它不喜欢'Description'变量中的引号。

例如,“描述”可以是:

VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561

如果我从上述说明中删除双引号,则效果很好。 我通过执行以下操作对此进行了进一步测试,并且按预期工作:

        $(document).ready(function () {
        var str = 'VALVE BALL 1" 2000 RP THRD NACE SS BALON LS-10561';
        copyDescription(str);
    });

我尝试通过JavaScript进行.replace('“','\\”')和.replace('“','')的操作,但均不起作用。我可以通过修改将值获取为的C#代码来删除引号删除双引号就可以了,只是不能通过JavaScript,有什么想法吗?

问题在于"正在终止HTML属性并切断了JS中间语句。

双引号必须表示为&quot; 以双引号分隔的属性值中。

使用Microsoft反跨站点脚本库并在字符串上调用函数JavaScriptEncode()

我所使用的解决方案是使用我的问题的答案:

onclick="copyDescription('<%# Server.HtmlEncode(Eval("Description").ToString()) %>');"

Server.HtmlEncode可以满足我的需要。

感谢大家的帮助和解答!

将该Eval调用改为输出JSON或纯文本。 它将处理所有嵌入式Javascript元字符。 我不知道如何在C#中完成,但是在PHP中很简单:

 onclick="copyDescription(<?php echo json_encode(...) ?>);"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM