我有一个C#字符串需要传递给页面然后发送回服务器。它需要能够处理单引号,双引号和可能导致问题的任何其他标准字符。我正在使用MVC4和剃须刀。现在我将字符串传递给javascript。我有这样的事情:
var str = '@Html.Raw(Model.SomeString.Replace("'", @"\'"))';
这很好用,但我想知道是否有一种更好,更优雅的方式来转义将传递给javascript的C#字符串。
我已经尝试将值存储在隐藏字段中,如下所示:
@Html.Hidden(x => x.SomeString)
但是当我去抓取价值时它会出现双引号问题 编辑:结果是Html.Hidden问题是由其他原因引起的
非常感谢任何帮助!
注意:必须在IE9和10中工作。没有ViewBags。
答案 0 :(得分:10)
您必须使用HttpUtility.JavaScriptStringEncode
。这是为了这个目的,它不仅编码引号,还编码转义序列。
BTW @Html.Hidden
应该可以正常运行,因为它还处理转义(与上述不同的类型,在这种情况下HTML转义,处理符号,<>等)。
答案 1 :(得分:1)
您可以使用HtmlEncode和解码对应。
在javascript中,您必须执行相同操作:HTML-encoding lost when attribute read from input field