public ActionResult News() { NewsItemsViewModel vm = new NewsItemsViewModel(); vm.Items = repository.GetNews(); return(PartialView("NewsControl", vm)); }
// получить все новости public async Task <IActionResult> ReadAllNews() { // вьюмодель NewsItemsViewModel nivm = new NewsItemsViewModel(); nivm.newsItems = await _db.GetAllNewsItems(); nivm.currentPageNumber = 1; nivm.newsItemsCount = await _db.GetNewsItemsCount(); return(View(nivm)); }
// страница новостей pageSize public async Task <IActionResult> Page(int pageNumber) { // Вьюмодель для статей NewsItemsViewModel nivm = new NewsItemsViewModel(); // передача во вьюмодель - общего ко-ва новостей nivm.newsItemsCount = await _db.GetNewsItemsCount(); // номер текущей страницы nivm.currentPageNumber = 1; // сами новости nivm.newsItems = await _db.GetPageOfNewsItems(pageNumber, pageSize); return(View(nivm)); }
public NewsItemsViewModel GetNewsItems(int page = 1, int numberOfItems = 10) { var model = new NewsItemsViewModel(); var list = new List <Models.News>(); var item = Context.Site.Database.GetItem($"{Context.Site.ContentStartPath}/Data/News"); var newsIndex = ContentSearchManager.GetIndex(indexName); try { using (var context = newsIndex.CreateSearchContext()) { var results = context.GetQueryable <NewsSearchResultItem>(new CultureExecutionContext(Context.Language.CultureInfo)) .Where(x => x.Paths.Contains(item.ID) && x.TemplateId == Templates.News.ID) .OrderByDescending(x => x.NewsDate).Skip((page - 1) * numberOfItems).Take(numberOfItems); model.NumberOfSearchResults = results.GetResults().TotalSearchResults; var pagesCount = (double)model.NumberOfSearchResults / numberOfItems; model.NumberOfPages = (int)Math.Ceiling(pagesCount); if (results.Any()) { foreach (var newsSearchResultItem in results) { var news = new Models.News { Item = newsSearchResultItem.GetItem() }; list.Add(news); } } } } catch (Exception exception) { Log.Error("An error occured in NewsRepository GetNewsItems", exception.InnerException, typeof(NewsRepository)); } model.NewsItems = list; return(model); }