【问题标题】:How to escape double and single quote from JS string [duplicate]如何从JS字符串中转义双引号和单引号[重复]
【发布时间】:2016-04-19 07:49:29
【问题描述】:

我正在从服务器端代码中分配 JS string 变量的值。

这样

var fbShareTitle = "@(ViewBag.LeadTitle as string)";

ViewBag返回字符串值为

A "Fantastic" Lead With 'Qoute'

现在控制台报错

语法错误:缺失;声明之前

我试过了

var fbShareTitle = ("@(ViewBag.LeadTitle)").replace(/"/g, '\\"');

但现在我遇到了这个错误。

语法错误:缺失;声明之前

由于此字符串将在 fb 上共享,因此我无法修改字符串,例如将所有 " 替换为 '

【问题讨论】:

  • 请发布您的整个代码。
  • @AMACB 因为这个问题被问了很多次,所以真的没有必要发布实际代码......像bing.com/search?q=C%23+razor+javascript+quotes 这样的基本搜索可能已经揭示了答案......

标签: javascript c# jquery asp.net-mvc


【解决方案1】:

您的代码不起作用的原因是 Razor 会生成以下内容:

var fbShareTitle = "A "Fantastic" Lead With 'Qoute'";

这是无效的 JavaScript。您不能简单地通过replace 修复它,因为问题不是您的字符串不好,而是您的代码 无法解析-replace 永远无法执行。您需要通过修改 Razor 代码在生成相关 JavaScript 的服务器端修复它:

var fbShareTitle = @Html.Raw(Json.Encode(ViewBag.LeadTitle as string));

Json 会处理引号和正确的转义; Raw 将确保您的 <> 不会被替换。 @Html.Raw(Json.Encode(...)) 口头禅的额外好处:您可以使用它来注入任何可以用 JSON 编码的数据,而不仅仅是字符串。

【讨论】:

  • 您好,Json 的正确命名空间是什么?
  • @Sasinosoft 我相信是this,但我已经很久没有使用.NET了:)
  • @Amadan 非常感谢 :)
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 2011-10-06
  • 2012-12-27
  • 2016-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-27
相关资源
最近更新 更多