' IJsonHelper'不包含'编码'的定义

时间:2018-04-27 06:28:57

标签: javascript c# json asp.net-core

我想在我的视图中将字符串列表转换为javascript数组,并且我已经在互联网上的几个地方找到了以下建议:

@model IEnumerable<DSSTools.Models.Box.BoxWhiteListUser>

@{
    var boxManager = new DSSTools.Managers.BoxManager();
    var allusers = boxManager.GetAllUsersAsync().Result.Entries.ToList().Select(u => u.Login);
}

@section Scripts {
    <script>
        var sourcearray = null;

        $(document).ready(function () {
            var arr = JSON.parse('@Html.Raw(Json.Encode(@allusers))');
        });
    </script>
}

但是,我只是讨厌了

  

&#39; IJsonHelper&#39;不包含&#39;编码&#39;的定义没有扩展方法&#39;编码&#39;接受第一个类型&#39; IJsonHelper&#39;可以找到(你错过了使用指令或程序集引用吗?)

这怎么可能?

我也尝试过简单地调用

var arr = JSON.parse('@Html.Raw(allusers)');

但后来我在控制台中出现了这个错误

VM189:1 Uncaught SyntaxError: Unexpected token S in JSON at position 0
    at JSON.parse (<anonymous>)
    at HTMLDocument.<anonymous> (whitelist:107)
    at fire (jquery.js:3182)
    at Object.fireWith [as resolveWith] (jquery.js:3312)
    at Function.ready (jquery.js:3531)
    at HTMLDocument.completed (jquery.js:3547)

2 个答案:

答案 0 :(得分:3)

我设法用

做我需要的
sourcearray = JSON.parse('@Html.Raw(Json.Serialize(allusers))');

答案 1 :(得分:2)

您的答案可以简化为:

sudo dpkg -i path_to_the_deb
sudo apt --fix-broken install
sudo apt update

收件人:

sourcearray = JSON.parse('@Html.Raw(Json.Serialize(allusers))');

说明:

  1. sourcearray = @Json.Serialize(allusers); 返回Json.Serialize(),不需要将其包装在IHtmlContent中即可保留特殊字符。
  2. @Html.Raw()返回的文本已经是有效的javascript对象语法。您最好直接使用它,而不是通过将其用引号引起来然后通过@Json.Serialize()将该字符串转换为对象来将其转换为字符串。