7

私は次の方法で投影を作成しています:

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 構文は何ですか?

どうも

4

1 に答える 1

12

.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.ToStringbool、guid、int、uri などの単純な型を変換するために使用されます。

そして、あなたの見解Html.Rawでは、JSON を html エンコードしないでください:

var booksArray = @(Html.Raw(json))
于 2012-08-26T14:01:08.403 に答える