簡體   English   中英

“IJsonHelper”不包含“編碼”的定義

[英]'IJsonHelper' does not contain a definition for 'Encode'

我想將字符串列表轉換為我認為的 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>
}

然而,我只是有點煩人

“IJsonHelper”不包含“Encode”的定義,並且找不到接受“IJsonHelper”類型的第一個參數的擴展方法“Encode”(您是否缺少 using 指令或程序集引用?)

這怎么可能?

我也試過簡單地打電話

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)

我設法做我需要的

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

您的答案可以簡化為:

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

到:

sourcearray = @Json.Serialize(allusers);

解釋:

  1. Json.Serialize()返回IHtmlContent ,不需要將其包裝在@Html.Raw()以保留特殊字符。
  2. @Json.Serialize()返回的文本已經是有效的 javascript 對象語法。 您最好按原樣使用它,而不是通過將其包裝在引號中將其轉換為字符串,然后通過JSON.Parse()將該字符串轉換為對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM