Я следил за простой статьей, которую я нашел в Microsoft о том, как добавить подкачку в проект в c #. Это статья: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page?view=aspnetcore-2.1
Теперь, следуя этой статье, я столкнулся с проблемой в конце, когда я хочу передать данные в представление. Позвольте мне поделиться некоторыми из моего кода, чтобы вы, ребята, могли лучше понять его:
нумерованный список, полученный от microsft:
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(List<T> items, int count, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
TotalPages = (int)Math.Ceiling(count / (double)pageSize);
this.AddRange(items);
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 1);
}
}
public bool HasNextPage
{
get
{
return (PageIndex < TotalPages);
}
}
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);
}
}
метод на контроллере я использую:
[HttpGet("search/{option?}/{search}")]
public IActionResult GetSearchData(string option, string search, int? page, string currentFilter)
{
if (search != null)
{
page = 1;
}
else
{
search = currentFilter;
}
SearchViewModel data = new SearchViewModel();
var searchArticle = Mapper.Map<IEnumerable<SearchDataItemViewModel>>(_unitOfWork.Articles.GetByString(search));
data.SearchArticle = searchArticle;
var searchArticle2 = Mapper.Map<IEnumerable<SearchDataItemViewModel>>(_unitOfWork.Articles2.GetByString(search));
data.SearchArticle2 = searchArticle2;
var searchArticle3 = Mapper.Map<IEnumerable<SearchDataItemViewModel>>(_unitOfWork.Articles3.GetByString(search));
data.SearchArticle3 = searchArticle3;
var searchArticle4 = Mapper.Map<IEnumerable<SearchDataItemViewModel>>(_unitOfWork.Articles4.GetByString(search));
data.SearchArticle4 = searchArticle4;
int pageSize = 10;
//return View("Search", Helpers.PaginatedList<SearchDataItemViewModel>.CreateAsync(data, page ?? 1, pageSize));
//this is where I got an error
}
ошибка, которую я получил:
Аргумент 1: невозможно преобразовать из 'Website.ViewModels.SearchViewModel' в System.Linq.IQueryable
Также это пример одного из моих запросов:
public IEnumerable<Article2> GetByString(string word)
{
IEnumerable<Article2> article2 = _appContext.Article2
.Include(t => t.ParentPage)
.Where(t => t.Status == RecordStatus.Enabled && (t.Name.Contains(word) || t.Description.Contains(word)));
return article2;
}
Я действительно понимаю, что это значит, но как я могу передать переменную «data» в представление, чтобы я мог ее использовать?
Я немного застрял здесь, поэтому любая помощь, ребята, будет высоко оценена. По крайней мере, укажи мне правильное направление или что-то еще.
Спасибо за время !!!