2011-02-04 59 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