这看起来很简单,令人尴尬。但是,第一个问题是将MVC 3.0(Razor)中的新ViewBag中的值传递给JavaScript块时,这是正确的方法吗?更重要的是,您在何处以及如何应用正确的字符串替换代码以防止单引号成为'如下面的结果提醒?
将其添加到单个脚本块中:
alert('@ViewBag.str') // "Hi, how's it going?"
以下提醒结果:
答案 0 :(得分:33)
Razor将对所有内容进行HTML编码,因此为了防止'被编码为'
,您可以使用
alert('@Html.Raw(ViewBag.str)');
但是,现在你的字符串中间有一个实际的'导致javascript错误。要解决此问题,您可以将警报字符串用双引号(而不是单引号)包装,或者转义'字符。所以,在你的控制器中你会有
ViewBag.str = "Hi, how\\'s it going?";
答案 1 :(得分:0)
另一种使用 JSON 字符串的解决方案:
C#
ViewBag.str = "[{\"Text\":\"Hi, how's it going?\"}]";
Javascript
var j = @Html.Raw(ViewBag.str);
alert (j[0].Text);