この問題を解決するより簡単な方法は、文字列を返し、その文字列をJavaScriptSerializerでjsonにフォーマットすることです。
public string GetEntityInJson()
{
JavaScriptSerializer j = new JavaScriptSerializer();
var entityList = dataContext.Entitites.Select(x => new { ID = x.ID, AnotherAttribute = x.AnotherAttribute });
return j.Serialize(entityList);
}
ビューで必要なプロパティを選択することが重要です。オブジェクトの中には親の参照があります。属性を選択しないと、テーブル全体を取り出すだけで循環参照が表示されることがあります。
public string GetEntityInJson()
{
JavaScriptSerializer j = new JavaScriptSerializer();
var entityList = dataContext.Entitites.toList();
return j.Serialize(entityList);
}
あなたがテーブル全体をしたくない場合は代わりに、これを行います:
public string GetEntityInJson()
{
JavaScriptSerializer j = new JavaScriptSerializer();
var entityList = dataContext.Entitites.Select(x => new { ID = x.ID, AnotherAttribute = x.AnotherAttribute });
return j.Serialize(entityList);
}
これは、あなただけの属性で、以下のデータを持つビューをレンダリングするのに役立ちます
はこれをしないでくださいあなたのウェブをより速く走らせることができます。
場合、誰かが(ないベストプラクティス)「自動化」望んでいる余分なコードを必要としないこの問題の解決策、このQAをチェックアウト:[JSONで(ServiceStack.Textライブラリ)をEntity Frameworkのクラス参照をシリアライズしない](HTTP ://stackoverflow.com/questions/14998890/do-not-serialize-entity-framework-class-references-in-json-servicestack-text-li/15010306#15010306)この1で – kape123
ルック。 'ScriptIgnore'属性を使った解決策があります。 [stackoverflow.com/questions/1193857/subsonic-3-0-0-2-structs-tt] (http://stackoverflow.com/questions/1193857/subsonic-3-0-0-2-structs-tt) – freddoo
これは私にとって最高の解決策でした。私はゲーム>トーナメント>ゲーム>トーナメント>ゲームなどを持っていました。トーナメント.Gameプロパティに 'ScriptIgnore'属性を置きました。それはうまく機能しました:) – eth0