我在asp.net mvc项目的控制器中有一个动作。
public JsonResult GetProductBySearch(string Q)
{
JsonResult jr = new JsonResult();
var _product = from a in DataContext.SearchItem(Q)
select new { ID = a.ID, ProName = a.Name };
jr.Data = _product.ToList();
jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jr;
}
我想将此json数据返回到我的项目视图。如果我使用“select new”,它在我的视图中运行良好,但据我所知,当我们需要子数据集时,选择new正在使用。但是在这个查询中,我想从我的表中获取所有字段,如下所示:
public JsonResult GetProductBySearch(string Q)
{
JsonResult jr = new JsonResult();
var _product = from a in DataContext.SearchItem(Q)
select a;
jr.Data = _product.ToList();
jr.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return jr;
}
这是我循环播放的内容,如果我使用select new,它的效果非常好。 但是当我改为SELECT时,警报不起作用。
$.getJSON(url, data, function (data) {
alert(1);
$.each(data, function (index, proValByDep) {
});
});
请任何想法。
答案 0 :(得分:1)
为什么使用“来自DataContext.SearchItem(Q)中的a选择”?
你不能使用jr.Data=DataContext.SearchItem(Q).ToList()
答案 1 :(得分:1)
我只是猜测问题,因为问题有点不清楚。
在第一个例子中,我们看到:
select new { ID = a.ID, ProName = a.Name };
在第二个字段中,字段名称将不相同,因此生成的json将ProName
而不是Name
。
也许javascript期待ProName
并错误输出,因为它未定义。
这并不能解释为什么alert(1);
不起作用。