javascript - 将 C# 字符串放入 asp.net-mvc View 中的 javascript 字符串时正确编码

标签 javascript arrays asp.net-mvc encoding

我有一个 asp.net-mvc View ,我正在从我的 View 模型生成一个像这样的 JavaScript 数组:

 var jsDict = new Array();
 <% foreach (var myEvent in Model.MyEvents) { %>
      jsDict['<%=myEvent.Date.ToString("yyyy-MM-dd") %>'] = '<%=myEvent.Title %>';
 <% } %>

问题是在某些情况下

 myEvent.Title

其中有一个撇号,因此会破坏字符串。

例如

jsDict['2015-01-01'] = 'Test is my 'first' test';

对上面的单词first进行转义以使其成为有效数组的正确方法是什么。

我尝试将其更改为双引号而不是撇号

 jsDict["2015-01-01"] = "Test is my 'first' test";

这似乎有效,但我担心某些事件标题中会有双引号,所以我想要一个适用于撇号和双引号的解决方案。

最佳答案

将撇号转义为 \',并将反斜杠转义为 \\:

jsDict['<%=myEvent.Date.ToString("yyyy-MM-dd") %>'] = '<%=myEvent.Title.Replace("\\", "\\\\").Replace("'", "\\'") %>';

如果字符串可以包含控制字符,则还需要替换它们,例如添加 .Replace("\n", "\\n")

关于javascript - 将 C# 字符串放入 asp.net-mvc View 中的 javascript 字符串时正确编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32549406/

相关文章:

c# - 使用从一个 Controller 到另一个 Controller 的 DbContext 变量

javascript - 如何调用使用状态(由另一个函数设置)并更新状态的函数

javascript - Array.some() 不是函数

c - C 中二维数组中一行的平均值?

c# - Dapper 程序在刷新后不返回任何内容

jquery - 在 MVC 中创建动态 Html 控件的最佳方法

javascript - 类似 url 的 AngularJS 正则表达式路由以加载不同的 Controller 和 View

javascript - TypeScript/Angular $q 立即解决延迟不起作用

javascript - 检测变量更改并执行回调的最有效方法

javascript - 获取唯一的数据属性值并从中创建键值数组?