AsQueryable() 返回用户未处理的 NullReference 异常“对象引用未设置为对象实例”
Posted
技术标签:
【中文标题】AsQueryable() 返回用户未处理的 NullReference 异常“对象引用未设置为对象实例”【英文标题】:AsQueryable() returns NullReference Exception not handled by the User "Object reference not set to an instance of object" 【发布时间】:2013-03-08 10:45:15 【问题描述】:我是 ASP.Net MVC 4.0 的新手,我正在尝试使用 Trirand 的 JQGrid 从数据库中填充数据。当我尝试将数据绑定到 JQGrid 时出现上述错误。
错误在下面一行
return gridModel.MarketPriceAnalysisGrid.DataBind(oMarketPriceAnalysisModel.AsQueryable<MarketPriceAnalysisModel>());
代码如下:
// This method is called when the grid requests data
public JsonResult SearchGridDataRequested()
// Get both the grid Model and the data Model
var gridModel = new MarketPriceAnalysisJQGridModel();
// customize the default Orders grid model with our custom settings
SetUpMarketPriceAnalysisGrid(gridModel.MarketPriceAnalysisGrid);
var oMarketPriceAnalysisModel = MarketPriceAnalysisRepository.GetListOfSAPSPTComponents();
// return the result of the DataBind method, passing the datasource as a parameter
// jqGrid for ASP.NET MVC automatically takes care of paging, sorting, filtering/searching, etc
return gridModel.MarketPriceAnalysisGrid.DataBind(oMarketPriceAnalysisModel.AsQueryable<MarketPriceAnalysisModel>());
GetListofSAPSPTComponents 方法返回一个 IEnumerable
IEnumerable<MarketPriceAnalysisModel> GetListOfSAPSPTComponents();
我刚刚发现错误源是 Trirand.Web.MVC 并且堆栈跟踪显示
`at Trirand.Web.Mvc.Util.PrepareJsonResponse(JsonResponse response, JQGrid grid, DataTable dt)
at Trirand.Web.Mvc.Util.ConvertToJson(JsonResponse response, JQGrid grid, DataTable dt)
at Trirand.Web.Mvc.JQGrid.FilterDataSource(Object dataSource, NameValueCollection queryString, IQueryable& iqueryable)
at Trirand.Web.Mvc.JQGrid.GetJsonResponse()
at Trirand.Web.Mvc.JQGrid.DataBind()
at Trirand.Web.Mvc.JQGrid.DataBind(Object dataSource)
at MedPackMVC.Controllers.MarketPriceAnalysisController.SearchGridDataRequested() in c:\Work\04_Dev\MedPackMVCApplication\MedPackMVC\Controllers\MarketPriceAnalysisController.cs:line 95
`
不确定这可能是什么原因? 谢谢
【问题讨论】:
What is a NullReferenceException in .NET? 的可能重复项 最终,MarketPriceAnalysisRepository.GetListOfSAPSPTComponents()
返回 null。你检查了吗?
@Dima - 不,它从数据库返回数据。
我发现了这个问题。 JQGrid 的数据字段名称未正确映射到数据库列名称。
感谢@siv,我遇到了同样的问题,您的上述评论帮助我确定了我使用的列别名之一与 JQGridColumn.DataField 不匹配。请将此作为答案发布,因为它可能对其他人有所帮助。
【参考方案1】:
当您的 MarketPriceAnalysisModel 具有分配给 jqGrid 的字段而不是属性时,也会出现此错误。
【讨论】:
以上是关于AsQueryable() 返回用户未处理的 NullReference 异常“对象引用未设置为对象实例”的主要内容,如果未能解决你的问题,请参考以下文章
linq中AsEnumerable和AsQueryable的区别
linq中AsEnumerable和AsQueryable的区别