2011-02-04 9 views
1

私はasp.net mvcアプリケーションで既存の生成されたjsonデータにデータを追加したいのですが、どうすればいいですか? という意味は、Departmentsのリストをプロパティとして持つクラスCompanyを持っているとします。しかし、JSONシリアライゼーションは、この種の循環参照をサポートすることはできません。だから私はどのように、私は部署のリストなしで最初に会社のオブジェクトをシリアル化し、次に各社の部門を取得し、このリストをシリアル化し、会社のシリアル化されたデータにデータを追加する方法を考えた。私はこれが間違った方法かもしれないことを知っているしかし、私は時間の最後のためにする必要があります。ご案内ください。json data runtimeの編集方法は?

答えて

1

あなたが任意の循環参照がありませんビューモデル定義することができます。

public class DepartmentViewModel 
{ 
    public string DepartmentName { get; set; } 
} 

public class CompanyViewModel 
{ 
    public IEnumerable<DepartmentViewModel> Departments { get; set; } 
} 

をしてから、あなたのモデルとビューモデル返し、最後に(あなたはこのためにAutoMapperを使用することができます)との間でマップしますモデルをビューに表示します。例えば

public ActionResult Index() 
{ 
    var companies = _repository.GetCompanies(); 
    var companiesVM = Mapper.Map<IEnumerable<Company>, IEnumerable<CompanyViewModel>>(companies); 
    return Json(companiesVM, JsonRequestBehavior.AllowGet); 
} 

今、あなたは、もはや循環参照を持っていないだろうし、あなたが成功したJSONにビューモデルをシリアライズすると、あなただけの表示に必要な情報を渡すことができるようになります。

+0

ここでマッパーとは何ですか?どのようにコードに含めることができますか?これは第三者のユーティリティですか?はい、それは長い時間のために使用するのが安全です –

+0

@ラリット、それはAutoMapperであり、私は私の答えにリンクを提供しました。これはサードパーティマッピングユーティリティです。私は何の問題もなく長時間生産に使ってきました。サードパーティのユーティリティを使用したくない場合は、この機能を自分で作成し、プロパティを手動でコピーすることができます。 –

+0

ありがとう、これは役に立つかもしれません。あなたはこのユーティリティが信頼できると言っているので、間違いなく私はそれを感謝するつもりです。 –

関連する問題