当我尝试在 javascript 中使用带有转义符号的字符串时,我遇到了一个问题。
在 View 的顶部,我以这种方式初始化变量:
@{ var lol = "hello \"mister sir\" I am quotes"; }
在 javascript 中,我尝试了不同的变体。出于测试目的,我编写了一个小函数:
$selector = $('#some-button');
function test(str) {
$selector.html(str);
alert(str);
}
有我的尝试:
javascript 转义。它在警报或 html 内容中都可以正常工作。
test("hello \"mister sir\" I am quotes");
HtmlAttributeEncode 或 HtmlEncode。它们并非在所有情况下都有效。它显示
hello "mister sir"我是 quotes
警惕和你好“先生先生”;我是 html 内容中的引号
test("@HttpUtility.HtmlAttributeEncode(lol)"); test("@HttpUtility.HtmlEncode(lol)");
默认 c# 或 JavaScriptStringEncode。它们在警报中不起作用。它显示
hello 'mister sir';我是警报中的引号
。test("@Ajax.JavaScriptStringEncode(lol)"); test("@lol"); test("@HttpUtility.JavaScriptStringEncode(lol)");
Html.Raw()。根本不起作用。它用未转义的双引号分隔标记。
test("@Html.Raw(lol)");
你能帮我想出一些可以作为 javascript 变体 (1) 工作的方法吗?
最佳答案
通常,最好使用您最喜欢的 JSON 序列化程序来编码您想要注入(inject)到 javascript 中的任何值。这将自动在字符串周围添加双引号,并适本地转义字符串中的任何内容:
test(@Html.Raw(JsonConvert.Serialize(lol)));
关于javascript - 如何将带双引号的转义 c# 字符串转换为带双引号的转义 javascript 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31813475/