2011-02-04 60 views
1

我想在我的asp.net mvc應用程序中將數據添加到現有生成的json數據中,我必須做什麼? 意思是,假設我有班級公司的部門名單作爲財產。但json序列化不能支持這種循環引用。所以我想,如果我首先序列化Company對象而沒有Departments列表,然後爲每個公司獲取部門,然後序列化這個列表並將數據附加到公司的序列化數據。我知道這可能是錯誤的方式。但由於時間上的最後通i,我必須這樣做。請指導。如何編輯json數據運行時?

回答

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

Mapper在這裏是什麼?我如何將它包含在代碼中?這是任何第三方實用程序?如果是的話,那麼是否安全使用很長時間 – 2011-02-04 09:11:09