我在ASP.NET MVC 3项目中有以下ActionResult:
public ActionResult Index(string searchWord, GridSortOptions gridSortOptions, int? page)
{
var userListModel = new PagedViewModel<UserModel>
{
ViewData = ViewData,
Query = conn.Query<UserModel>("select Id, Login, Firstname, Lastname from User").AsQueryable(),
GridSortOptions = gridSortOptions,
DefaultSortColumn = "Id",
Page = page,
PageSize = 20
}
.AddFilter("searchWord", searchWord, u => u.Login.Contains(searchWord) || u.Firstname.Contains(searchWord) || u.Lastname.Contains(searchWord))
.Setup();
return View(userListModel);
}
如果searchWord为null,则一切正常,但只要添加searchWord,MVCContrib Grid就会出现'对象引用未设置为对象的实例'错误。如果我从AddFilter方法中删除.Contains),它可以工作,如下所示:
.AddFilter("searchWord", searchWord, u => u.Login == searchWord)
任何人都知道解决这个问题的方法,或者为什么我不能使用Dapper IQueryable包含?
由于
修改
感谢Sam的回答,这解决了它:
.AddFilter("searchWord", searchWord, u => (!string.IsNullOrEmpty(u.Login) && u.Login.Contains(searchWord))
答案 0 :(得分:1)
这不是一个小巧的问题。
您有一组对象,其中一些具有null
属性,而您正尝试使用.Contains
var users = new UserModel[] { new UserModel(); }
// Login is null
users.AsQueryable().where(u => u.Login.Contains("bob")); // kaboom