我通过生成投影
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语法是什么?
thx
您需要.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
不会对JSON进行html编码:
var booksArray = @(Html.Raw(json))