如果将返回类型定义为IQueryable
,那么我的ajax调用会失败一段时间。
[HttpGet]
public IQueryable<Banner> GetBannerForExcel()
{
return this._banneruow.Repository.GetAll();
}
我收到500内部服务器错误,也无法调试;
XML解析错误:未找到任何元素位置:moz-nullprincipal:{4acaf0ef-4230-404d-ae26-304916e1c044}第1行,第1列:
因此,当我使用返回类型List<Banner>
时,它完美无误。
答案 0 :(得分:1)
如果您的控制器返回OData格式,则返回IQueryable的操作的响应正文将包含更多信息,例如下一页数据,odata元数据。 IQueryable支持进一步过滤,分页,但它不支持通过索引器进行随机访问。 List支持通过索引器进行随机访问,并且不支持进一步过滤。在您的情况下,如果您只需要客户端数据,则返回List或IEnumerable。
IQueryable是数据层(服务器端)的更好选择,因为它推迟了执行。
我还建议您使用浏览器开发工具或Fiddler
来跟踪使用IQueryable和List时从服务器获取的内容您可以在此处找到更多信息:
IQueryable, IEnumerable or List