【发布时间】:2009-09-23 04:17:05
【问题描述】:
如何格式化 Json 响应以包含嵌套的一对多相关数据?
我的简单 JQuery 自动完成示例。 Linq2Sql 在里面。这个问题的第一部分回答了here。这使用带有 Linq 2 SQL 的存储库来发送响应:
public IQueryable GetProductIDs(string myPrefix, int limit)
{
return from z in db.Products
where z.ItemNo.StartsWith(myPrefix)
select new { id = z.ItemNo, name = z.DetailText, **** };
//, This is where I need to assemble about 4 related product quantities
// like Qty1: 5, PricePer: $3, Qty2: 10, PricePer: $2, Qty3: 25, PricePer: $1
}
它返回一个json对象:
public ActionResult autocomplete(string q, int limit)
{
var jsonData = plantRepository.GetProductIDs(q, limit);
return Json(jsonData);
}
这当前返回可使用 JavaScript 解析的数据:
parse: function(data) {
var rows = new Array();
for( var i = 0; i<data.length; i++)
{ rows[i] = {data:data[i], value:data[i].name, result:data[i].id }; }
return rows;}
那么如何格式化 Linq 2 SQL 以返回可以解析为 data[i].price[1].qty、data[i].price[1].pricePer 的 Json? (或者只是在初始化器中添加一个多部分对象?)
我希望这是有道理的。我提供了所有信息以提供上下文,因为这个问题本身对我来说没有意义。
【问题讨论】:
-
顺便说一句,我正在使用关系来填充 html
-
除非我错过了这个问题......我不知道如何在不知道表结构的情况下回答这个问题。你有一个单独的表,其中包含项目 - 数量 - 价格值?
-
Product 表具有一对多到 Price(s) 表,其中包含“qty”和“pricePer”字段。因此,该对象将具有 product.prices.qty 和 product.prices.pricePer,其中价格是关系。
-
想一想,这是 LinqPad 做得好的地方。
-
类似 from p in Products where p.ItemNo == "CHOAK21" select new { first = new {a = "hello", b = "there" }, second = new {a = "嗨", b = "第 2 号"} }
标签: jquery asp.net-mvc linq-to-sql autocomplete