2014-03-12 38 views
0

當我正在開發一個使用jQuery對話框和實體框架的CRUD操作的基本員工應用程序時,當我正在調試時,當我正在構建時,出現兩種類型的錯誤該解決方案,我知道他們都相互關聯,但我無法弄清楚「System.ArgumentNullException:值不能爲空」在MVC 3

錯誤1時建築:

的方法的類型參數「System.Linq.Enumerable.OrderBy(系統.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); 
} 

回答

2

您的搜索條件必須是λ表達式例如

OrderBy(e => 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 => e.EmployeeId)

相關問題