如何从JS字符串中

时间:2016-01-14 04:46:42

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

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

喜欢这个

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

ViewBag返回字符串值为

A "Fantastic" Lead With 'Qoute'

现在它在控制台

中出错了
  

SyntaxError:missing;在陈述之前

我试过这个

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

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

  

SyntaxError:missing;在陈述之前

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

1 个答案:

答案 0 :(得分:0)

您的代码无法正常工作的原因是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编码的数据,而不仅仅是字符串。