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的区别

LINQ语句中的.AsEnumerable() 和 .AsQueryable()的区别

linux提示[-f: 未找到命令

AsQueryable() 的目的是啥?

为啥类 DBSet 的 AsQueryable() 不在 MSDN 文档中?