1

IListアプリケーションにサイトがあり、サイトには大量のプロパティがあります。

このリストをJSONに変換して、これに似たドロップダウンリストで使用したいと思います

    var sites = SiteRepository.FindAllSites();
    return new JsonResult() { Data = sites, JsonRequestBehavior = JsonRequestBehavior.AllowGet };

私が抱えている問題は、サイトクラスのidプロパティとnameプロパティのみを使用したいということです。これを回避する方法は、「アダプタ」クラスを使用して、これら2つのプロパティのみを公開し、それをシリアル化することだと考えていました。

私が抱えている問題は、オブジェクトのリストを処理できるように、クラスをジェネリックにしたいということです。誰かが同じような状況に遭遇してそれを解決しましたか?

編集:[ScriptIgnore]クラス全体をシリアル化したい場合があるため、属性を使用できません。

4

2 に答える 2

4

サイトのリストから匿名クラスを作成できますか?

var sites = SiteRepository.FindAllSites().Select(x=> new { Id=x.Id, Name=x.Name});

の子孫であるFindAllSites()を返すように見えるので、の拡張メソッドを使用できるはずです(つまり)。これにより、 (すべてのプロパティを含む)が(2つのプロパティのみを含む)に変換され、リストの代わりにそのオブジェクトに渡されます。IListIEnumberableSystem.LinqSelect()List<Site>IEnumerable<some_anon_class>JsonResultSite

于 2010-03-09T11:55:11.300 に答える
0

クラスフィールドを[ScriptIgnore](System.Web.Script.Serialization)で装飾すると、C#は、[XmlIgnore]で装飾する場合のXmlシリアル化とほぼ同じ方法で、Jsonを使用したシリアル化中にそれらを無視します。

MSDN

于 2010-03-09T11:54:37.633 に答える