【问题标题】:How to elegantly escape single and double quotes when passing C# string to javascript [duplicate]将C#字符串传递给javascript时如何优雅地转义单引号和双引号[重复]
【发布时间】:2014-03-07 23:47:09
【问题描述】:

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

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

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

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

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

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

非常感谢任何帮助!

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用 HtmlEncode 和 decode 对应项。

    在 javascript 中你也必须这样做:HTML-encoding lost when attribute read from input field

    【讨论】:

      【解决方案2】:

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

      顺便说一句,@Html.Hidden 应该可以正常工作,因为它还处理转义(与上述不同,在这种情况下是 HTML 转义,处理 & 符号、 等)。

      【讨论】:

        猜你喜欢
        • 2012-05-28
        • 2016-04-19
        • 2016-12-09
        • 2012-12-27
        • 1970-01-01
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多