【问题标题】:"System.ArgumentNullException: Value cannot be null" in MVC 3MVC 3 中的“System.ArgumentNullException:值不能为空”
【发布时间】:2014-03-12 13:05:59
【问题描述】:

当我使用 jQuery 对话框和实体框架开发 CRUD 操作的基本员工应用程序时,我在调试和构建解决方案时遇到两种类型的错误,我知道它们都相互关联,但我我无法弄清楚

构建时出现错误 1:

无法从用法中推断方法“System.Linq.Enumerable.OrderBy(System.Collections.Generic.IEnumerable, System.Func)”的类型参数。尝试明确指定类型参数

这是代码(在模型类中):

public IEnumerable<tblEmployee> GetEmployeePage(int pageNumber, int pageSize, string searchCriteria)
{
    if (pageNumber < 1)
        pageNumber = 1;

    return testEmp.tblEmployees
      .OrderBy(searchCriteria) //I am getting error here//
      .Skip((pageNumber - 1) * pageSize)
      .Take(pageSize)
      .ToList();
}

调试时出现错误2:

System.ArgumentNullException:值不能为空。

代码如下(在视图中):

@model Emp_Mvc_Application.Models.PagedEmployeeModel 
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
    WebGrid grid = new WebGrid(rowsPerPage: Model.PageSize);
    grid.Bind(Model.TblEmp, autoSortAndPage: false, rowCount: Model.TotalRows);
}

【问题讨论】:

    标签: jquery asp.net-mvc linq asp.net-mvc-3 razor


    【解决方案1】:

    您的搜索条件必须是 lambda 表达式,例如

    OrderBy(e =&gt; e.EmployeeID)

    试试这个而不是string

    public IEnumerable<tblEmployee> GetEmployeePage(int pageNumber, int pageSize, Func<tblEmployee, object> searchCriteria)
    {
    if (pageNumber < 1)
            pageNumber = 1;
    
        return testEmp.tblEmployees
          .OrderBy(searchCriteria) 
          .Skip((pageNumber - 1) * pageSize)
          .Take(pageSize)
          .ToList();
    }
    

    这样称呼它:

    var result = GetEmployeePage(1, 10, e =&gt; e.EmployeeId)

    【讨论】:

      【解决方案2】:

      看起来您正在传递一个字符串作为您的 orderby 标准 - 该方法需要一个委托。这似乎是一个误导性错误,但我相信这是你的问题。

      例如:

      .OrderBy(e => e.LastName)
      

      如果您需要能够按字符串标准进行排序,您可能需要查看此处- How do I apply OrderBy on an IQueryable using a string column name within a generic extension method?

      【讨论】:

        猜你喜欢
        • 2021-08-01
        • 2020-03-01
        • 2020-09-25
        • 2013-02-10
        • 2021-08-29
        • 2019-11-01
        • 1970-01-01
        • 2018-07-10
        • 2021-10-11
        相关资源
        最近更新 更多