我通过以下方式制作投影:
var query = from book in books select new { label = book.Title,value = book.ID };
在我的剃刀页面中,我需要使用:
var booksArray = [{ @(json) }];
这样得到的数组看起来像:
label: 'c++',value: 'c++' },{ label: 'java',value: 'java' },{ label: 'PHP',value: 'PHP' },{ label: 'coldfusion',value: 'coldfusion' }
我从几种不同的方法非常接近 – 我可以得到一个在服务器端看起来正确的字符串,但当呈现给页面本身时,所有’标记变为' .
但专注于通过JSON.net实现这一目标……
最可能的方法似乎应该是:
var json = JsonConvert.ToString(query);
但那扔了:
Unsupported type: System.Linq.Enumerable+WhereSelectListIterator`2[Project.Entity.Book,<>f__AnonymousType3`2[System.String,system.int32]]. Use the JsonSerializer class to get the object's JSON representation.
什么是正确的JSON.net语法?
谢谢
解决方法
您需要
.ToArray()和
Html.Raw()的组合
ToArray()来评估查询并使JsonConvert满意
var query = from book in books select new { label = book.Title,value = book.ID }; var json = JsonConvert.SerializeObject(query.ToArray());
注意:如果要序列化复杂类型,则需要使用JsonConvert.SerializeObject. JsonConvert.ToString用于转换简单类型,如bool,guid,int,uri等.
并在您的视图Html.Raw不html编码JSON:
var booksArray = @(Html.Raw(json))
原文地址:https://www.jb51.cc/aspnet/245211.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。