学用MVC4做网站四:公共模型

网站内可能包含文章、留言、产品等,这些内容都有像标题、发布日期,发布人,所属栏目……一部分共同数据,把这些数据做个公共模型放到一个单独模型中。

字段

名称

类型

必填

默认值

说明

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>

公共模型到此,后面开始写文章功能。

=======================================

去黑龙江了一段时间,真的冷!十几天没刮胡子、没洗澡,不是人过的日子,好在终于弄的差不多了,我王老五又杀回来了!收心、学习!

你可能感兴趣的:(mvc)