public IActionResult Index(string category, int?page) { //取出默认的分类定向 string defaultcategoryindex = _configuration.GetSection("Forum_Category:Dedault").Value; if (string.IsNullOrEmpty(category)) { category = defaultcategoryindex; } //取出配置文件的分类,使用字典存储 Dictionary <string, string> categorys = _configuration.GetSection("Forum_Category:data").Get <Dictionary <string, string> >(); var flag = categorys.ContainsKey(category); //如果category不是分类的一个,又不是默认cateogry,那么就返回404页面 if (!categorys.ContainsKey(category)) { if (defaultcategoryindex != category) { return(View("Error404")); } } var forumItemViewModel = new forumItemViewModel(); var forums = new List <forumViewModel>(); int page_forum_count = int.Parse(_configuration.GetSection("page_Setup:page_forum_count").Value); //如果category是默认的话,返回全部帖子的分页版 if (defaultcategoryindex == category) { forums = _forumserver.GetForumsItem(page, page_forum_count, out forumItemViewModel); } else { forums = _forumserver.GetCategoryItemForums(int.Parse(category), page, page_forum_count, out forumItemViewModel); } forumItemViewModel.forumViewModels = forums; //将分类索引赋值给viewmodel类 forumItemViewModel.categoryindex = category; forumItemViewModel.CategoryList = categorys; ViewBag.ReturnUrl = WebUtility.UrlEncode(Request.Path.Value); return(View(forumItemViewModel)); }
public List <forumViewModel> GetCategoryItemForums(int categoryid, int?pageIndex, int number, out forumItemViewModel itemViewModel) { int index; if (pageIndex == null) { index = 1; } else { index = pageIndex.Value; } //编写获取所有帖子(特定属性)和帖子作者(特定属性)的Linq to SQL //PS:这里没有在Table后面使用Include("User"),原因可以查看有道云笔记中的问题总结 var table = _forumRepository.Table.Where(f => f.CategoryId == categoryid).Select((f) => new forumViewModel() { forum_ID = f.ID, forum_Title = f.Title, forum_Content = f.Content, forum_CreateTime = f.Create_Time, forum_author_Name = f.User.Nickname, forum_author_Id = f.User.ID, Reading_volume = f.Reading_volume, forum_author_HeaderAddress = f.User.HeadAddress }); //不使用Count属性,因为Count会触发查询,使用Count方法不会 int pagecount = table.Count(); //赋值当前页数和总页数 itemViewModel = new forumItemViewModel() { pageCount = (int)Math.Ceiling((double)pagecount / number), CurrentPage = index }; //定义要跳多少个数据 var skipnumber = (index - 1) * number; return(table.Skip(skipnumber).Take(number).ToList()); }