在Razor中生成单引号生成JavaScript String

Dav*_*ave 21 asp.net-mvc razor

我正在使用Razor在JavaScript中组装几行.我认为最简单的方法是首先组装整个JavaScript块,然后输出整个.问题是,单引号被呈现为'.

是否可以更改最后一行以使其正确写入:

    var friendArray = new Array();
    @{
        int i = 0;
        string jsString="";
        foreach(var friend in friends)
        {
            jsString = jsString + "friendArray[";
            jsString = jsString + i.ToString();
            jsString = jsString + "]='";
            jsString = jsString + friend.displayname;
            jsString = jsString + "';";
            i++;
        }
        @jsString;
    }
Run Code Online (Sandbox Code Playgroud)

以上产生了这个:

  friendArray[0]=& #39;Hollister& #39;;friendArray[1]=& #39;Festus& #39;;
Run Code Online (Sandbox Code Playgroud)

Arj*_*nbu 39

您可以通过以下方式输出来关闭HTML的编码:

@Html.Raw(jsString)
Run Code Online (Sandbox Code Playgroud)

  • 如果jsString不受信任,则这是脚本注入的可能途径.要非常小心. (6认同)
  • 这样可行。实际上,我早些时候尝试过,但是我认为我不需要在@前面加上前缀,所以什么也没写。谢谢。 (3认同)
  • @Dave:是的,没有它,您处于C#模式,因此@强制razor / html模式,从而实际输出结果。 (2认同)