将单个Qoute的字符串从MVC Razor传递到JavaScript

use*_*306 17 javascript asp.net-mvc razor viewbag

这看起来很简单,令人尴尬.但是,第一个问题是将MVC 3.0(Razor)中的新ViewBag中的值传递给JavaScript块时,这是正确的方法吗?更重要的是,您在何处以及如何应用正确的字符串替换代码以防止单引号变为下面的结果警报中的'?

将其添加到单个脚本块中:

alert('@ViewBag.str')   // "Hi, how's it going?"
Run Code Online (Sandbox Code Playgroud)

结果如下警告:

在此输入图像描述

ata*_*ini 33

Razor将对所有内容进行HTML编码,因此为了防止"编码" ',您可以使用

alert('@Html.Raw(ViewBag.str)');
Run Code Online (Sandbox Code Playgroud)

但是,现在你的字符串中间有一个实际的'导致javascript错误.要解决此问题,您可以将警报字符串用双引号(而不是单引号)包装,或者转义'字符.所以,在你的控制器中你会有

ViewBag.str = "Hi, how\\'s it going?";
Run Code Online (Sandbox Code Playgroud)