[英]'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);
解释:
Json.Serialize()
返回IHtmlContent
,不需要将其包装在@Html.Raw()
以保留特殊字符。@Json.Serialize()
返回的文本已经是有效的 javascript 对象语法。 您最好按原样使用它,而不是通过将其包装在引号中将其转换为字符串,然后通过JSON.Parse()
将该字符串转换为对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.