网站内可能包含文章、留言、产品等,这些内容都有像标题、发布日期,发布人,所属栏目……一部分共同数据,把这些数据做个公共模型放到一个单独模型中。
字段 |
名称 |
类型 |
必填 |
默认值 |
说明 |
CommonModelId |
模型Id |
Int[key] |
是 |
|
|
CategoryId |
栏目 |
Int |
是 |
|
|
Inputer |
用户 |
string(255) |
是 |
|
|
Model |
模型名称 |
string(50) |
是 |
Article |
|
Title |
标题 |
String(255) |
是 |
|
|
Hits |
点击 |
Int |
是 |
0 |
|
ReleaseDate |
发布日期 |
Datetime |
是 |
Now |
|
Status |
状态 |
Int |
是 |
0 |
0-待审核;1-正常 |
PicUrl |
首页图片 |
string(255) |
否 |
|
|
CommentStatus |
评论状态 |
bool |
是 |
True |
False关闭评论,True-依栏目设置 |
|
|
|
|
|
|
ContentOrders |
内容排序方式 |
List<SelectListItem> |
未映射 |
|
0-默认设置;1-id降序;2-id升序;3-发布时间降序;4-发布时间升序;5-点击降序,6-点击升序 |
Category |
栏目 |
Category |
外键 |
|
|
在Modles文件夹点右键添加类CommonModel.cs
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Web.Mvc; namespace Ninesky.Models { /// <summary> /// 公共模型 /// </summary> public class CommonModel { [Key] public int CommonModelId { get; set; } /// <summary> /// 栏目Id /// </summary> [Display(Name="栏目")] [Required(ErrorMessage="×")] public int CategoryId { get; set; } /// <summary> /// 录入者 /// </summary> [Display(Name="录入者")] [Required(ErrorMessage = "×")] [StringLength(255, ErrorMessage = "×")] public string Inputer { get; set; } /// <summary> /// 模型名称 /// </summary> [Display(Name="模型名称")] [Required()] [StringLength(50)] public string Model { get; set; } /// <summary> /// 标题 /// </summary> [Display(Name="标题")] [Required(ErrorMessage = "×")] [StringLength(255, ErrorMessage = "×")] public string Title { get; set; } /// <summary> /// 点击 /// </summary> [Display(Name = "点击")] [Required(ErrorMessage = "×")] public int Hits { get; set; } /// <summary> /// 发布日期 /// </summary> [Display(Name = "发布日期")] [Required(ErrorMessage = "×")] public DateTime ReleaseDate { get; set; } /// <summary> /// 状态【0-待审核;1-正常】 /// </summary> [Display(Name="状态")] [Required(ErrorMessage = "×")] public int Status { get; set; } /// <summary> /// 首页图片 /// </summary> [Display(Name="首页图片")] [StringLength(255, ErrorMessage = "×")] public string PicUrl { get; set; } /// <summary> /// 评论状态 /// </summary> [Display(Name="评论状态")] [Required(ErrorMessage = "×")] public bool CommentStatus { get; set; } /// <summary> /// 栏目 /// </summary> public virtual Category Category { get; set; } public CommonModel() { ReleaseDate = System.DateTime.Now; } [NotMapped] public static List<SelectListItem> ContentOrders { get { List<SelectListItem> _cOrders = new List<SelectListItem>(7); _cOrders.Add(new SelectListItem { Text = "默认排序", Value = "0" }); _cOrders.Add(new SelectListItem { Text = "Id降序", Value = "1" }); _cOrders.Add(new SelectListItem { Text = "Id升序", Value = "2" }); _cOrders.Add(new SelectListItem { Text = "发布时间降序", Value = "3" }); _cOrders.Add(new SelectListItem { Text = "发布时间升序", Value = "4" }); _cOrders.Add(new SelectListItem { Text = "点击降序", Value = "5" }); _cOrders.Add(new SelectListItem { Text = "点击升序", Value = "6" }); return _cOrders; } } [NotMapped] public static List<SelectListItem> ContentStatus { get { List<SelectListItem> _cStatus = new List<SelectListItem>(2); _cStatus.Add(new SelectListItem { Text = "待审核", Value = "0" }); _cStatus.Add(new SelectListItem { Text = "正常", Value = "1" }); return _cStatus; } } } }
在Repository文件夹点右键添加类CommonModelRepository
using Ninesky.Models; using System.Linq; using System.Web.Mvc; namespace Ninesky.Repository { public class CommonModelRepository:RepositoryBase<CommonModel> { public override bool Add(CommonModel cModel) { dbContext.CommonModels.Add(cModel); return dbContext.SaveChanges() > 0; } public override bool Update(CommonModel cModel) { dbContext.CommonModels.Attach(cModel); dbContext.Entry<CommonModel>(cModel).State = System.Data.EntityState.Modified; return dbContext.SaveChanges() > 0; } public override bool Delete(int cModelId) { dbContext.CommonModels.Remove(dbContext.CommonModels.SingleOrDefault(m => m.CommonModelId == cModelId)); return dbContext.SaveChanges() > 0; } /// <summary> /// 获取分页公共模型内容列表 /// </summary> /// <param name="categoryId">栏目Id</param> /// <param name="cChildren">是否包含子栏目</param> /// <param name="model">模型名称</param> /// <param name="userName">用户名</param> /// <param name="currentPage">当前页</param> /// <param name="pageSize">每页记录数</param> /// <param name="order">排序方式</param> /// <returns>分页数据</returns> public PagerData<CommonModel> List(int categoryId, bool cChildren,string model, string userName, int currentPage, int pageSize, int order) { PagerConfig _pConfig = new PagerConfig { CurrentPage = currentPage, PageSize = pageSize }; var _cModels = dbContext.CommonModels.Include("Category").AsQueryable(); if (categoryId != 0) { if (cChildren)//包含子栏目 { CategoryRepository _cRsy = new CategoryRepository(); IQueryable<int> _children = _cRsy.Children(categoryId, 0).Select(c => c.CategoryId); _cModels = _cModels.Where(m => _children.Contains(m.CategoryId)); } else _cModels = _cModels.Where(m => m.CategoryId == categoryId);//不包含子栏目 } if (!string.IsNullOrEmpty(model)) _cModels = _cModels.Where(m => m.Model == model); if (!string.IsNullOrEmpty(userName))_cModels = _cModels.Where(m => m.Inputer == userName); _pConfig.TotalRecord = _cModels.Count();//总记录数 //排序 switch (order) { case 1://id降序 _cModels = _cModels.OrderByDescending(m => m.CommonModelId); break; case 2://Id升序 _cModels = _cModels.OrderBy(m => m.CommonModelId); break; case 3://发布日期降序 _cModels = _cModels.OrderByDescending(m => m.ReleaseDate); break; case 4://发布日期升序 _cModels = _cModels.OrderBy(m => m.ReleaseDate); break; case 5://点击降序 _cModels = _cModels.OrderByDescending(m => m.Hits); break; case 6://点击升序 _cModels = _cModels.OrderBy(m => m.Hits); break; default://默认id降序 _cModels = _cModels.OrderByDescending(m => m.CommonModelId); break; } //分页 _cModels = _cModels.Skip((_pConfig.CurrentPage - 1) * _pConfig.PageSize).Take(_pConfig.PageSize); PagerData<CommonModel> _pData = new PagerData<CommonModel>(_cModels, _pConfig); return _pData; } } }
函数的意义 List(int categoryId, bool cChildren,string model, string userName, int currentPage, int pageSize, int order)用来获取分页公共模型内容列表
参数:categoryId-栏目Id;id-栏目id【id=0全部栏目】;cChildren-是否包含子栏目【id!=0时有效】;userName –用户名【所有用户为空】; page-当前页;pazeSize-每页显示记录数(0- 表示依栏目设置);order排序方式
返回数据类型:分页数据PagerData<CommonModel>
公共模型到此,后面开始写文章功能。
=======================================
去黑龙江了一段时间,真的冷!十几天没刮胡子、没洗澡,不是人过的日子,好在终于弄的差不多了,我王老五又杀回来了!收心、学习!