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

标签 javascript c# asp.net-mvc c#-4.0 razor

当我尝试在 javascript 中使用带有转义符号的字符串时,我遇到了一个问题。

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

@{ 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。它们并非在所有情况下都有效。它显示 hello "mister sir"我是 quotes 警惕和 你好“先生先生”;我是 html 内容中的引号

    test("@HttpUtility.HtmlAttributeEncode(lol)");
    test("@HttpUtility.HtmlEncode(lol)");
    
  3. 默认 c# 或 JavaScriptStringEncode。它们在警报中不起作用。它显示 hello 'mister sir';我是警报中的引号

    test("@Ajax.JavaScriptStringEncode(lol)");
    test("@lol");
    test("@HttpUtility.JavaScriptStringEncode(lol)");
    
  4. 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/

相关文章:

javascript - 如何在 jQuery 语法下使用 scrollIntoView()?

javascript - 如何在 html 中对 <style> 声明进行沙箱处理?

javascript - 函数链

c# - Action.ToString() 可以返回 "System.Action"以外的任何东西吗?

c# - 从 DataGridView 中删除列

c# - SQL Server 中的日期列到 ASP.NET 模型中的 System.DateTime

asp.net-mvc - 如何在 ASP.NET MVC 3 中创建可配置系统?

javascript - 简单的 angularjs 应用程序,但我得到 {{ this should be the data }}

javascript - 如何在通过 Http 消息响应内容发送的 javascript 中显示服务器端生成的 PDF 流

javascript - addEventListener() 不适用于 Firefox 中的图像