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

我有一个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 。 这是为了这个目的,它不仅编码引号,还编码转义序列。

BTW @Html.Hidden应该可以正常工作,因为它还处理转义(与上面不同的类型,在这种情况下HTML转义,处理&符号,<>等)。

您可以使用HtmlEncode和解码对应物。

在javascript中你必须这样做: 从输入字段读取属性时HTML编码丢失