Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在asp.net mvc中对ViewModel应用分页_C#_Asp.net Mvc - Fatal编程技术网

C# 如何在asp.net mvc中对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

我试图对我的ViewModel应用分页、搜索框和排序。之前,我成功地应用了所有这三个函数。但是,对于这个
角色视图模型
,因为
模型
的结果是一个
列表
,而
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