如何在将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编码丢失