我有一个 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/