C#-需要ASP.NET Core 2.0分页帮助
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-需要ASP.NET Core 2.0分页帮助,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3117字,纯文字阅读大概需要5分钟。
内容图文
![C#-需要ASP.NET Core 2.0分页帮助](/upload/InfoBanner/zyjiaocheng/686/d4b027304a024df9b264ce10baef4a20.jpg)
再次需要帮助.
因此,我目前正在使用ASP.NET Core 2.0 Paging,并且无法正常工作.
我在这里遵循了教程https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page
但是,问题是该教程使用的是Entity Framework日期集还是IQuery?但是,我正在使用List<>.有谁知道如何解决此问题或将我的列表转换为EF DataSet之类的东西?
控制器Paginated.cs:
public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source, int pageIndex, int pageSize)
{
var count = await source.CountAsync();
var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();
return new PaginatedList<T>(items, count, pageIndex, pageSize);
}
控制器:
public async Task<IActionResult> Index(string sortOrder, string currentFilter, string searchString, int? page)
{
ViewData["CurrentSort"] = sortOrder;
ViewBag.CurrentSort = sortOrder;
var students = addList();
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
switch (sortOrder)
{
case "name_desc":
students = students.OrderByDescending(s => s.Name).ToList();
break;
default:
break;
}
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewData["CurrentFilter"] = searchString;
int pageSize = 3;
return View(await PaginatedList<Student>.CreateAsync(students.AsNoTracking(), page ?? 1, pageSize));
// return View(PaginatedList<Student>(students, page ?? 1, pageSize));
}
如果您看上面的代码,则仅当它是从EF检索数据集时才有效.
CountAsync(),students.AsNoTracking()无效,因为它是一个列表.
有人知道我该怎么办吗?
你有任何需要都请告诉我.
谢谢!
编辑:
public IQueryable<Student> addList()
{
var studentList = new List<Student>();
studentList.Add(new Student
{
Id = 1,
Name = "David",
ClassName = "Moria"
});
studentList.Add(new Student
{
Id = 2,
Name = "Jenny",
ClassName = "Moria"
});
studentList.Add(new Student
{
Id = 3,
Name = "Crystal",
ClassName = "Moria"
});
studentList.Add(new Student
{
Id = 4,
Name = "jenny",
ClassName = "Moria"
});
studentList.Add(new Student
{
Id = 5,
Name = "Andria",
ClassName = "Moria"
});
studentList.Add(new Student
{
Id = 6,
Name = "Sweet",
ClassName = "Moria"
});
studentList.Add(new Student
{
Id = 7,
Name = "Susan",
ClassName = "Moria"
});
return studentList.AsQueryable();
}
解决方法:
您的addList()只是创建一组内存中的硬编码数据.使用异步方法(实际上会降低性能)或使用IQueryable(您不查询外部数据源)毫无意义.
我建议将您的addlist方法重命名为更有意义的名称,例如FetchStudents().由于您生成的List< Student>在该方法中,它应该返回IList< Student>.
public IList<Student> FetchStudents()
{
....
return studentList;
}
接下来,将CreateAsync()方法更改为接受IEnumerable< T>.并删除异步调用
public static PaginatedList<T> Create(IEnumerable<T> source, int pageIndex, int pageSize)
{
var count = source.Count();
var items = source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
return new PaginatedList<T>(items, count, pageIndex, pageSize);
}
最后将Index()方法修改为
public IActionResult Index(string sortOrder, string currentFilter, string searchString, int? page)
{
....
var students = FetchStudents();
....
return View(PaginatedList<Student>.Create(students, page ?? 1, pageSize));
}
内容总结
以上是互联网集市为您收集整理的C#-需要ASP.NET Core 2.0分页帮助全部内容,希望文章能够帮你解决C#-需要ASP.NET Core 2.0分页帮助所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。