c# - 将 C# 字符串传递给 javascript 时如何优雅地转义单引号和双引号

标签 c# javascript asp.net-mvc-4 razor escaping

<分区>

我有一个 C# 字符串需要传递到页面然后发送回服务器。它需要能够处理单引号、双引号和任何其他可能导致问题的标准字符。我正在使用 MVC4 和 Razor 。现在我正在将字符串传递给 javascript。我有这样的东西:

var str = '@Html.Raw(Model.SomeString.Replace("'", @"\'"))';

这工作得很好,但我想知道是否有更好、更优雅的方法来转义将传递给 javascript 的 C# 字符串。

我已经尝试过将值存储在隐藏字段中,如下所示:

@Html.Hidden(x => x.SomeString)

但是当我去获取值时,双引号出现问题。
编辑:原来 Html.Hidden 问题是由其他原因引起的

非常感谢任何帮助!

注意:必须在 IE9 和 10 中工作。没有 ViewBags。

最佳答案

你必须使用 HttpUtility.JavaScriptStringEncode .这是为了这个确切的目的而制作的,它不仅对引号进行编码,而且还对转义序列进行编码。

顺便说一句,@Html.Hidden 应该工作得很好,因为它也处理转义(与上述不同的一种,在这种情况下是 HTML 转义,处理与号、< > 等)。

关于c# - 将 C# 字符串传递给 javascript 时如何优雅地转义单引号和双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21680710/

相关文章:

javascript - 在网站顶部放置一个 HTML 按钮?

asp.net-mvc - 配置 Magical Unicorn Mvc 错误工具包

c# - ASP.NET MVC 重定向到 Action 重定向循环

c# - 有效地将字节数组转换为十进制

javascript - 使用 jQuery 在特定点加载页面(没有动画!)

c# - 什么是抽象类?

php - document.ready 页面重新加载

c# - 当用户在收到响应之前离开时,ASP.NET MVC Controller 会发生什么情况?

c# - 即使在运行 Regsvr32 之后,我也会收到 aximp 错误

c# - 重载枚举运算符 C# 和 Silverlight