• 学用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>

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

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

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

  • 相关阅读:
    ADO.NET
    c#中的is和as运算符
    继承 多态
    封装
    面向对象定义 特征 原则
    sql触发器
    MySQL 学习总结2
    sql 存储过程
    MySQL 学习总结1
    DevExpress主要常用控件说明:
  • 原文地址:https://www.cnblogs.com/mzwhj/p/2863004.html
Copyright © 2020-2023  润新知