zoukankan      html  css  js  c++  java
  • ASP.NET MVC5 网站开发实践(二) Member区域

    上次把member的用户部分完成,现在开始做文章管理部分。文章部分根据涉及显示现实文章列表,发布文章,修改文章,删除文章等功能。最终的实现目标是使用权限来控制用户是否能进行相应操作,管理员权限的会显示全部文章列表和我的文章列表,普通用户只显示我的文章列表。由于还没做权限这块所以没法判断,暂时登录后所有都可以操作。

    目录

    ASP.NET MVC5 网站开发实践 - 概述

    ASP.NET MVC5 网站开发实践(一) - 项目框架

    ASP.NET MVC5 网站开发实践(一) - 框架(续) 模型、数据存储、业务逻辑

    ASP.NET MVC5 网站开发实践(二) - 用户部分(1)用户注册

    ASP.NET MVC5 网站开发实践(二) - 用户部分(2)用户登录、注销

    ASP.NET MVC5 网站开发实践(二) - 用户部分(3)修改资料、修改密码

    一、总体说明

    先看一下文章管理设想要实现的功能:

    image

    再看一下类图

    image

    这里Category是栏目;CommonModel是公共模型;Article是文章;Attachment是附件;

    CommonModel是内容管理这块抽取出来的公共部分,像文章,咨询甚至产品都有一些共同的内容这里把它单独提取出来作为一个类。CommonModel可能包含一片文章,包含一组附件,包含一系列评论,他们之间的关系类图中已经表示出来。

     

    二、搭建架构

    这个顺序根以前一样

    image

    1、IDAL

    在IDAL添加接口InterfaceCommonModelRepository,其实只是继承自InterfaceBaseRepository,没有添加任何其他内容。

    namespace Ninesky.IDAL
    {
        /// <summary>
        /// 公共模型接口
        /// <remarks>
        /// 创建:2014.02.23
        /// 修改:2014.02.28
        /// </remarks>
        /// </summary>
        public interface InterfaceCommonModelRepository:InterfaceBaseRepository<Models.CommonModel> {
    
        }
    }

    再依次添加InterfaceCategory,InterfaceArticle,InterfaceAttachment,方式和公共模型接口相同。

    2、DAL

    DAL中是对IDAL接口的实现,还是从CommonModel开始,先添加CommonModelRepository,也是跟原来一样直接继承没有什么代码。

    namespace Ninesky.DAL
    {
        /// <summary>
        /// 公共模型仓储
        /// <remarks>
        /// 创建:2014.02.23
        /// </remarks>
        /// </summary>
        public class CommonModelRepository:BaseRepository<Models.CommonModel>, IDAL.InterfaceCommonModel
        {
        }
    }

    然后依次添加CategoryRepository,ArticleRepository,AttachmentRepository。

    3.IBLL

    这次先从InterfaceCategoryService开始,InterfaceArticleService,InterfaceCommentService,InterfaceAttachmentService。InterfaceCommonModelService内容较多放在最后。

    InterfaceCategoryService

    具体功能会在做栏目的时候再写,这里暂时空着。

    namespace Ninesky.IBLL
    {
        /// <summary>
        /// 栏目服务接口
        /// <remarks>
        /// 创建:2014.02.23
        /// </remarks>
        /// </summary>
        public class InterfaceCategoryService:InterfaceBaseService<Models.Category>
        {
        }
    }

    4.BLL

    同样先从CategoryService开始,然后依次添加ArticleService,AttachmentService。CommonModelService。

    using Ninesky.DAL;
    using Ninesky.IBLL;
    using Ninesky.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace Ninesky.BLL
    {
        /// <summary>
        /// 栏目服务
        /// <remarks>
        /// 创建:2014.02.27
        /// </remarks>
        /// </summary>
        public class CategoryService:BaseService<Category>,InterfaceCategoryService
        {
            public CategoryService() : base(RepositoryFactory.CategoryRepository) { }
        }
    }

    5、Web

    在web项目的Member区域下添加三个空控制器。

    栏目控制器CategoryController

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Ninesky.IBLL;
    using Ninesky.BLL; 
    using Ninesky.Models;
    
    namespace Ninesky.Web.Areas.Member.Controllers
    {
        [Authorize]
        public class CategoryController : Controller
        {
            private InterfaceCategoryService categoryRepository;
            public CategoryController() { categoryRepository = new CategoryService(); }
            
    
        }
    }

    文章控制器ArticleController

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using Ninesky.Models;
    using Ninesky.IBLL;
    using Ninesky.BLL;
    
    namespace Ninesky.Web.Areas.Member.Controllers
    {
        public class ArticleController : Controller
        {
            private InterfaceArticleService articleService;
            private InterfaceCommonModelService commonModelService;
            public ArticleController() { articleService = new ArticleService(); commonModelService = new CommonModelService(); }
      }
    }

    附件控制器AttachmentController

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Collections;
    using System.Web;
    using System.Web.Mvc;
    using System.IO;
    using Ninesky.IBLL;
    using Ninesky.BLL;
    using Ninesky.Models;
    
    namespace Ninesky.Web.Areas.Member.Controllers
    {
        /// <summary>
        /// 附件控制器
        /// <remarks>
        /// 创建:2014.03.05
        /// </remarks>
        /// </summary>
        [Authorize]
        public class AttachmentController : Controller
        {
     }
    }

    架构结束,明天开始实现文章相关功能!

  • 相关阅读:
    腾讯广告算法大赛2019
    Mysql的部分常用SQL语句
    org.activiti.dependencies 7.1.0.M6 造成版本冲突问题的解决
    windows 将 redis 注册为服务 自动启动或手动启动
    org.springframework.security.access.AccessDeniedException: Access is denied
    对两个List进行关联匹配,选择匹配上的记录形成新的List输出
    越是大型的组织,越需要试验基地,试验基地应有特殊待遇
    dubbo+zookeeper 安装所遇系列问题
    签名与验签——图解
    关于航空母舰战斗群出海训练,常有大量鱼群跟随问题的建议和设想
  • 原文地址:https://www.cnblogs.com/mzwhj/p/3590976.html
Copyright © 2011-2022 走看看