C# 如何在asp.net mvc中对ViewModel应用分页
我试图对我的ViewModel应用分页、搜索框和排序。之前,我成功地应用了所有这三个函数。但是,对于这个C# 如何在asp.net mvc中对ViewModel应用分页,c#,asp.net-mvc,C#,Asp.net Mvc,我试图对我的ViewModel应用分页、搜索框和排序。之前,我成功地应用了所有这三个函数。但是,对于这个角色视图模型,因为模型的结果是一个列表,而AsTracking()需要IQueryable,所以我使用了model.AsQueryable().AsTracking()。但是,当我尝试呈现页面时出现错误 控制器 public async Task<IActionResult> Test(string sortOrder, string currentFilter, string s
角色视图模型
,因为模型
的结果是一个列表
,而AsTracking()
需要IQueryable
,所以我使用了model.AsQueryable().AsTracking()
。但是,当我尝试呈现页面时出现错误
控制器
public async Task<IActionResult> Test(string sortOrder, string currentFilter, string searchString, int? pageNumber, string name)
{
var model = new List<RolesViewModel>();
ViewData["CurrentSort"] = sortOrder;
if (searchString != null)
{
pageNumber = 1;
}
else
{
searchString = currentFilter;
}
// foreach to get each user from userManager.Users
foreach (var user in userManager.Users)
{
// construct RolesViewModel object from user's attributes
var r = new RolesViewModel
{
Id = user.Id,
UserName = user.UserName,
Name = user.Name,
BirthDate = user.BirthDate,
PhoneNumber = user.PhoneNumber
};
model.Add(r);
}
foreach (var user in model)
{
user.Roles = await userManager.GetRolesAsync(userManager.Users.FirstOrDefault(u=>u.UserName == user.UserName));
}
//return View(model);
int pageSize = 3;
return View(await PaginatedList<RolesViewModel>.CreateAsync(model.AsQueryable().AsTracking(), pageNumber ?? 1, pageSize));
}
InvalidOperationException: The provider for the source IQueryable doesn't implement IAsyncQueryProvider. Only providers that implement IEntityQueryProvider can be used for Entity Framework asynchronous operations.
Testing.Helper.PaginatedList<T>.CreateAsync(IQueryable<T> source, int pageIndex, int pageSize) in PaginatedList.cs
+
var count = await source.CountAsync();
Testing.Controllers.AdminController.Test(string sortOrder, string currentFilter, string searchString, Nullable<int> pageNumber, string name) in AdminController.cs
+
return View(await PaginatedList<RolesViewModel>.CreateAsync(model.AsQueryable().AsTracking(), pageNumber ?? 1, pageSize));
公共异步任务测试(字符串排序器、字符串currentFilter、字符串searchString、int?页码、字符串名称)
{
var模型=新列表();
ViewData[“CurrentSort”]=排序器;
if(searchString!=null)
{
页码=1;
}
其他的
{
searchString=currentFilter;
}
//foreach从userManager.Users获取每个用户
foreach(userManager.Users中的var user)
{
//从用户属性构造RolesViewModel对象
var r=新角色视图模型
{
Id=user.Id,
UserName=user.UserName,
Name=user.Name,
BirthDate=user.BirthDate,
PhoneNumber=user.PhoneNumber
};
模型。添加(r);
}
foreach(模型中的var用户)
{
user.Roles=await userManager.GetRolesAsync(userManager.Users.FirstOrDefault(u=>u.UserName==user.UserName));
}
//返回视图(模型);
int pageSize=3;
返回视图(wait PaginatedList.CreateAsync(model.AsQueryable().astrack(),pageNumber±1,pageSize));
}
查看器中出现错误
public async Task<IActionResult> Test(string sortOrder, string currentFilter, string searchString, int? pageNumber, string name)
{
var model = new List<RolesViewModel>();
ViewData["CurrentSort"] = sortOrder;
if (searchString != null)
{
pageNumber = 1;
}
else
{
searchString = currentFilter;
}
// foreach to get each user from userManager.Users
foreach (var user in userManager.Users)
{
// construct RolesViewModel object from user's attributes
var r = new RolesViewModel
{
Id = user.Id,
UserName = user.UserName,
Name = user.Name,
BirthDate = user.BirthDate,
PhoneNumber = user.PhoneNumber
};
model.Add(r);
}
foreach (var user in model)
{
user.Roles = await userManager.GetRolesAsync(userManager.Users.FirstOrDefault(u=>u.UserName == user.UserName));
}
//return View(model);
int pageSize = 3;
return View(await PaginatedList<RolesViewModel>.CreateAsync(model.AsQueryable().AsTracking(), pageNumber ?? 1, pageSize));
}
InvalidOperationException: The provider for the source IQueryable doesn't implement IAsyncQueryProvider. Only providers that implement IEntityQueryProvider can be used for Entity Framework asynchronous operations.
Testing.Helper.PaginatedList<T>.CreateAsync(IQueryable<T> source, int pageIndex, int pageSize) in PaginatedList.cs
+
var count = await source.CountAsync();
Testing.Controllers.AdminController.Test(string sortOrder, string currentFilter, string searchString, Nullable<int> pageNumber, string name) in AdminController.cs
+
return View(await PaginatedList<RolesViewModel>.CreateAsync(model.AsQueryable().AsTracking(), pageNumber ?? 1, pageSize));
InvalidOperationException:源IQueryable的提供程序未实现IAsyncQueryProvider。只有实现IEntityQueryProvider的提供程序才能用于实体框架异步操作。
在PaginatedList.cs中测试.Helper.PaginatedList.CreateAsync(IQueryable源、int pageIndex、int pageSize)
+
var count=await source.CountAsync();
在AdminController.cs中测试.Controllers.AdminController.Test(字符串排序器、字符串currentFilter、字符串搜索字符串、可为空的页码、字符串名称)
+
返回视图(wait PaginatedList.CreateAsync(model.AsQueryable().astrack(),pageNumber±1,pageSize));
如果您使用的是实体框架核心,则必须使用此命名空间:使用Microsoft.EntityFrameworkCore
而不是使用System.Data.Entity的代码>是,我正在使用Microsoft.EntityFrameworkCore