我正在开发一个asp.net核心1.1项目,我想在我的一些视图中创建分页。我研究了关于asp核心分页的微软文档,但它是一个非常简单的模式,有1个表。在我看来,我使用多表并使用viewmodel
来初始化它。我想使用PagingList<T>.CreateAsync()
方法创建分页但得到错误:
can not convert from system.linq.Iqueryable<> to system.linq.IorderedQueryable<>
我的行动:
[HttpGet]
public async Task<IActionResult> Index(int? page)
{
List<BookListViewModel> model = new List<BookListViewModel>();
var query = (from b in _context.books
join a in _context.authors on b.AuthorID equals a.AuthorId
join bg in _context.bookgroups on b.BookGroupID equals bg.BookGroupId
select new
{
b.BookId,
b.BookName,
b.BookPageCount,
b.BookImage,
b.AuthorID,
b.BookGroupID,
a.AuthorName,
bg.BookGroupName
});
foreach (var item in query)
{
BookListViewModel objmodel = new BookListViewModel();
objmodel.BookId = item.BookId;
objmodel.BookName = item.BookName;
objmodel.BookImage = item.BookImage;
objmodel.BookPageCount = item.BookPageCount;
objmodel.AuthorId = item.AuthorID;
objmodel.BookGroupId = item.BookGroupID;
objmodel.AuthorName = item.AuthorName;
objmodel.BookGroupName = item.BookGroupName;
model.Add(objmodel);
}
ViewBag.RootPath = "/upload/thumbnailimage/";
int pageSize = 3;
int pageNumber = (page ?? 1);
return View(await PagingList<BookListViewModel>.CreateAsync(model.AsQueryable() , pageNumber, pageSize));
}
我还没有在index
视图中写过关于分页的任何内容,它是一个简单的viewmodel列表
答案 0 :(得分:0)
从您发布的代码中确实无法确定。但例外情况表明import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(value: string[], args = ""): any {
return value.filter(item => item.startsWith(args));
}
}
方法需要{
"name": "helloapp",
"version": "1.0.0",
"description": "Hello App in Angular 5",
"main": "index.js",
"private": true,
"scripts": {
"start": "webpack-dev-server --hot",
"build": "rimraf dist && webpack --config ./webpack-config/webpack.prod.js"
},
"keywords": [],
"dependencies": {
"@angular/common": "5.1.2",
"@angular/compiler": "5.1.2",
"@angular/core": "5.1.2",
"@angular/forms": "^5.1.2",
"@angular/platform-browser": "5.1.2",
"@angular/platform-browser-dynamic": "5.1.2",
"bootstrap": "^3.3.7",
"core-js": "2.5.3",
"jquery": "^3.2.1",
"rxjs": "5.5.6",
"zone.js": "0.8.18"
},
"devDependencies": {
"@types/jquery": "^3.2.17",
"@types/node": "^8.5.2",
"angular2-template-loader": "^0.6.2",
"awesome-typescript-loader": "^3.4.1",
"css-loader": "^0.28.7",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.6",
"html-loader": "^0.5.1",
"html-webpack-plugin": "^2.30.1",
"optimize-css-assets-webpack-plugin": "^3.2.0",
"rimraf": "^2.6.2",
"style-loader": "^0.19.1",
"typescript": "2.5.3",
"webpack": "^3.10.0",
"webpack-dev-server": "^2.9.7",
"webpack-merge": "^4.1.1"
}
}
,但您要给它CreateAsync
。
尝试更改它以传递IOrderedQueryable
对象(如果您使用的是实体框架,我认为应该实现IQueryable
。)
query
(可能)背后的想法是使用它在数据库中进行分页。
你正在做的是将过滤后的集合带入内存(当通过结果时),然后进行分页。
代码可能如下所示:
IOrderedQueryable
希望它有所帮助。