我有一个简单的Action迭代dbset对每个记录执行一些操作然后通过json返回所选记录,有点像这样:
List<JsonResult> dataout = new List<JsonResult>();
foreach(var r in db.People.OrderBy("something")) {
// do stuff to the rec
string SubmittersName = rec.Submitter.Name;
dataout.Add(this.Json(new { rec.Created, rec.Name, SubmittersName,
OtherStuff }));
}
return new JsonResult() {
Data = dataout.Select(r=>r),
ContentEncoding = Encoding.UTF8,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
对我而言似乎有点笨拙,但它很容易跟随什么。
(同样在返回的json中我得到ContentEncoding:null,鉴于我指定了它似乎有点奇怪)
如何改进?
普遍的赞扬/评论赞赏。
TIA。
答案 0 :(得分:0)
你误用了JsonResult
。
JsonResult
不是存储JSON数据的方法;它只是一种从视图中返回JSON数据的方法
你不应该创建它们的列表。
通过从JsonResult
的集合返回JSON,您实际上将JsonResult
转换为JSON,包括他们的ContentEncoding
属性(您从未设置过)。
相反,您可以直接返回匿名类型的集合:
return Json(
db.People.OrderBy(something).Select(rec => new { rec.Created, ... }),
JsonRequestBehavior.AllowGet
);