博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.Net Core MVC 网站开发(Ninesky) 2.2、栏目管理功能-System区域添加
阅读量:7050 次
发布时间:2019-06-28

本文共 4567 字,大约阅读时间需要 15 分钟。

在asp或asp.net中为了方便网站的结构清晰,通常把具有类似功能的页面放到一个文件夹中,用户管理功能都放在Admin文件夹下,用户功能都放在Member文件夹下,在MVC中,通常使用区域(Areas)来组织,在.Net Core MVC 之前的MVC版本,区域都包含在Areas文件夹下,.Net Core MVC 与以前的版本还是有所不同,固定位置的限制,控制器和视图等都可以放置在任何地方,只要在控制器上注明区域名称就可以了。

创建区域的方式如下:

1、在项目的Startup.cs文件中注册区域路由。

1  routes.MapRoute(  2                     name: "area",  3                     template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");  4

2、给区域路由的控制器加上Area属性

1 [Area("区域名称")]

3、一般做法是 在项目中创建Areas\区域名称的文件夹,再在此文件夹下创建Controllers文件夹放控制器,Views文件夹放视图。(其实这点只是为了项目文件看起来清晰,并不是必须的。只要做好了上面的两步,控制器和视图放在项目的任何位置都可以)。

一、创建System区域

在Ninesky中为了项目结构的清晰,后台管理功能创建一个System区域。步骤如下:

1、注册路由

打开Startup.cs文件,注册区域路由。

2、创建区域文件夹

Ninesky.Web项目中右键->添加->文件夹,输入名称Areas。

在Areas文件夹上右键->添加->文件夹,输入名称System。

3、添加控制器

在System文件夹上右键->添加->文件夹Controllers。

在Controllers文件夹上右键->添加->控制器。对话框中选择MVC Controller-Empty,然后名称输入:CategoryController

修改默认生成的代码如下:注意控制器一定要加[Area("System")]

1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Threading.Tasks;  5 using Microsoft.AspNetCore.Mvc;  6 using Ninesky.Base;  7   8 namespace Ninesky.Web.Areas.System.Controllers  9 { 10     ///  11     /// 栏目控制器 12     ///  13     [Area("System")] 14     public class CategoryController : Controller 15     { 16         private NineskyDbContext _dbContext; 17         private CategoryService _categoryService; 18         public CategoryController(NineskyDbContext dbcontext) 19         { 20             _dbContext = dbcontext; 21             _categoryService = new CategoryService(dbcontext); 22         } 23         public IActionResult Index() 24         { 25             return Content("hellow word!"); 26         } 27     } 28 }

按F5运行,浏览器地址栏输入/System/category/Index,可以看到“hellow word!”。

4、添加布局页

在Ninesky.Web/Areas/System文件夹上右键->添加->文件夹,输入名称Views。

在Views文件夹右键->添加->文件夹,输入名称Shared。

在Shared文件夹右键->添加->新建项。选择MVC视图页,名称默认。

代码如下:

1   2   3   4     
5
6 @ViewData["Title"] - Ninesky系统管理 7 8
9
10
11
12
13
16
17
18 @Html.ApplicationInsightsJavaScript(TelemetryConfiguration) 19 20 21
40
41 @RenderBody() 42

43
44

©Ninesky- By 洞庭夕照

45
46
47 48
49
50
51
52
53
54
58
62
63
64 65 @RenderSection("scripts", required: false) 66 67 68

 

二、模型功能调整。

关于模型使用关系还是不使用关系的问题群里讨论了一下,最后也没有一个到底哪个优劣,我想就想数据库有关系型和非关系型一样都有它应用的场景。虽然用不用关系没确定,但是讨论的还是认为把模型放到一个单独的项目中比较好。这里就添加一个单独的项目Models

1、创建项目Ninesky.Models

解决方案(Ninesky)上点右键->添加->新建项目,选择.NET Core –> Class Library(.NET Core),名称输入:Ninesky.Models

Ninesky.Models项目中右键->添加->文件夹。输入名称Category。

2、将Base项目中的Category.cs,CategoryGeneral.cs,CategoryLink.cs,CategoryPage.cs,CategoryType.cs复制Models项目的Category文件夹中

将这些文件的命名空间改为Ninesky.Models

 

3、在Ninesky.DataLibrary中添加Ninesky.Models项目的引用。 将使用到栏目模型的代码中using Ninesky.Models。

在Ninesky.DataLibrary项目中添加类CategoryRepository,继承自,代码如下:

1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Linq.Expressions;  5 using System.Threading.Tasks;  6 using Ninesky.Models;  7 using Microsoft.EntityFrameworkCore;  8   9 namespace Ninesky.DataLibrary 10 { 11     ///  12     /// 栏目仓储 13     ///  14     public class CategoryRepository:BaseRepository
15 { 16 public CategoryRepository(DbContext dbContext) : base(dbContext) 17 { } 18 19 ///
20 /// 查找栏目[包含导航属性] 21 /// 22 ///
主键 23 ///
栏目
24 public override Category Find(Expression
> predicate) 25 { 26 return _dbContext.Set
().Include(c => c.General).Include(c => c.Page).Include(c => c.Link).SingleOrDefault(predicate); 27 } 28 } 29 } 30

====

三、其他

代码托管地址:

文章发布地址:

                

代码包下载:

转载地址:http://fupol.baihongyu.com/

你可能感兴趣的文章
第三次月考
查看>>
单例模式的理解与应用
查看>>
springmvc(一)
查看>>
Hibernate与 MyBatis的比较
查看>>
【51NOD-0】1137 矩阵乘法
查看>>
Android使用静默安装时碰见的问题
查看>>
MySQL单机多实例安装并配置主从复制
查看>>
awk调用shell命令的两种方法:system与print
查看>>
网络对抗技术 20164320 王浩 Exp 9 Web安全基础
查看>>
谷歌开源第二代机器学习系统 TensorFlow
查看>>
juqery模板 Templates
查看>>
eclipse 自动创建web.xml
查看>>
python 基础回顾2
查看>>
Servlet 示例
查看>>
十一.单表更新及多表更新
查看>>
深入理解DOM节点类型第三篇——注释节点和文档类型节点
查看>>
32位64位操作系统基本数据类型字节大小
查看>>
linux高级编程day04 笔记
查看>>
CF848C:Goodbye Souvenir(CDQ分治)
查看>>
BZOJ 1006: [HNOI2008]神奇的国度
查看>>