如何转换带有双引号的转义c#字符串到带有双引号的转义javascript字符串

本文关键字:转义 字符串 何转换 javascript 转换 | 更新日期: 2023-09-27 18:06:14

当我试图在javascript中使用它们时,我有一个使用转义符号的字符串的问题。

在视图的顶部,我这样初始化变量:

@{ var lol = "hello '"mister sir'" I am quotes"; }

在javascript中我尝试了不同的变体。为了测试的目的,我写了一个小函数:

    $selector = $('#some-button');
    function test(str) {
        $selector.html(str);
        alert(str);
    }

有我的尝试:

  1. javascript逃离。它在alert或html内容中都可以正常工作。

    test("hello '"mister sir'" I am quotes");
    
  2. HtmlAttributeEncode或HtmlEncode。它们并非在所有情况下都有效。在alert中显示hello "mister sir" i am quotes,在html内容中显示hello "mister sir" i am quotes

    test("@HttpUtility.HtmlAttributeEncode(lol)");
    test("@HttpUtility.HtmlEncode(lol)");
    
  3. 默认c#或JavaScriptStringEncode。它们在警报中不起作用。告警中显示hello "mister sir" i am quotes

    test("@Ajax.JavaScriptStringEncode(lol)");
    test("@lol");
    test("@HttpUtility.JavaScriptStringEncode(lol)");
    
  4. Html.Raw()。一点用都没有。它用未转义的双引号分隔标记。

    test("@Html.Raw(lol)");
    

你能帮我一些方法,将工作作为javascript变体(1)?

如何转换带有双引号的转义c#字符串到带有双引号的转义javascript字符串

通常最好使用您最喜欢的JSON序列化器来编码您想要注入javascript中的任何值。这将自动在字符串周围添加双引号,并适当地转义字符串内的任何内容:

test(@Html.Raw(JsonConvert.Serialize(lol)));