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

how to convert escaped c# string with double quotes to escaped javascript string with double quotes

当我尝试在 javascript.

中使用带有转义符号的字符串时,我遇到了一个问题

在视图顶部,我以这种方式初始化变量:

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

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

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

有我的尝试:

  1. javascript 转义。它在警报或 html 内容中都可以正常工作。

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

    中显示 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) 的方法吗?

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

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