用于在mvc模型中将数据公开为json的DataType

时间:2016-12-28 12:55:34

标签: json asp.net-mvc

如何将新属性引入我的mvc模型中,该模型将保存此城市json数据。

public ActionResult Edit(int id)
{
   MyModel model = repository.GetById(id);
   if (model.CountryId.HasValue)
   {
       // load cities into new property
   }    
   return this.View(result);
}

如果我想在客户端公开json以进行进一步的js操作,那么我的属性(Cities)应该是什么数据类型? ICollection的?对此有什么建议吗?

1 个答案:

答案 0 :(得分:1)

将它们设置为您喜欢的任何对象类型:

MyModel model = repository.GetById(id);
if (model.CountryId.HasValue)
{
   model.Cities = repository.GetCities(model.CountryId.Value);
}    
return this.View(model);

然后,在客户端上,您可以使用Json.NET库来序列化它。当我尝试将数组传递给客户端JS组件时,我使用这个技巧;实质上,它将对象数组序列化为客户端数组:

@(Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Cities))

无论什么类型的对象代表每个城市,决定了什么呈现给客户;它只是读取对象并呈现具有所有相同属性的等效JS对象。您可以通过说:

来微调
Model.Cities.Select(i => new { i.ID, i.Name, .. })

其中只包含一个子集。您还可以使用属性来排除我认为的某些列。