【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 (14)附数据库、发布项目

声明:本系列为原创,分享本人现用框架,未经本人同意,禁止转载!http://yuangang.cnblogs.com

希望大家好好一步一步做,所有的技术和项目,都毫无保留的提供,希望大家能自己跟着做一套,还有,请大家放心,只要大家喜欢,有人需要,绝对不会烂尾,我会坚持写完~

如果你感觉文章有帮助,点一下推荐,让更多的朋友参与进来,也是对本人劳动成果的鼓励,谢谢大家!由于还要工作,所以基本都是牺牲午休时间来写博客的,写博客呢不是简单的Ctrl+C、Ctrl+V,我是要挨着做一遍的,这也是对大家负责,所以有些时候更新不及时,或者问题没有及时解答,希望大家谅解,再次感谢大家!!

因为我引用了许多以前积累的类库,所以有些东西是重复的(后来更新),有些东西是过时的,包括我写的代码,希望大家不要纯粹的复制,取其精华去其糟粕>_<。

索引

【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目 目录索引

简述

总结一

整个系列其实还包括项目管理、考勤签到、邮件、内部聊天等等,这个东西是做不完的,如果继续还有新闻系统、静态生成等等等等....

其中,静态页生成在我的博客中可以找到,三种方式:

第一种 就是类似网上的很多CMS一样 采用标签替换,但这种方式是不推荐的,特别是在我们.Net中,标签解析是十分庞大和困难的;

第二种 是使用RazorEngine 解析我们的cshtml页面,这种使用十分简单,直接读取地址生成html就行了;

第三种 也是我使用的,解析html模板(Razor语法的html模板)然后通过RazorEngine 解析,这个是十分简便的,RazorEngine 会直接识别html中的语法。

 

。。。。我想,很多朋友已经等不急了。。。并且,后面的什么项目管理啊、邮件啊之类的 都是业务逻辑,不断的重复我们的东西,使用到的基本都讲过了,所以也是没有很大的必要性。

 

所以,我们分为两章来总结一下这个系列:

第一章总结完,我会分享整个数据库和已发布之后的程序供大家测试和抽取UI

第二章总结完 我会把程序源码分享给大家。

为什么第一章不分享源码呢?因为我还没有整理好,比如仓储类实际上没有UnitOfWork,对性能是十分不好的,我要改,很多朋友无数次的要完整的东西,所以先把发布之后的程序和数据库给大家,就当开胃菜,整理好之后全部分享。分享之后的源码仅供大家参考,请不要直接拿来使用,因为很多东西比如DDD的设计、UnitOfWork 都是没有完全实现的,大家可以关注

【无私分享:ASP.NET CORE 项目实战】目录索引 这个系列,在这个系列中我们会重构我们的思想,并且修改基础操作类(重新开发,没有在本系列中没有看懂仓储类库Repository的可以重点看下),实现对架构和性能的追求。

 

 

好了,废话不多说。

首先呢,我们来讲下依赖注入(DI):

在我们这个系列中,我们是通过Spring.net 来实现的(在Asp.net Core中已经底层支持【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)),大家最有印象的应该就是xml的配置。我们来看下Web.config:

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

我们重点看下 Spring配置指向,这里有算是两类指向,一类是webpage的指向(我们的应用程序层webpage),一类是Service的指向(我们的应用服务接口层)

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

我们建了很多xml文件,例如 ComService.xml、MailService.xml ,创建这些xml的目的其实跟我们建文件夹是一样的,就是为了分类管理,建一个也是可以的,并不是一定要建这么多。

包括webpage\config下的xml 这些作为Spring配置的xml 都应该修改为“嵌入的资源 ”

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

我们来分别讲下webpage/config 和 service\config 里面的xml,这里用通俗容易理解的方式讲下,希望大家不要扣字。

我们先来看下service\config 里面的xml,我们以Service.xml为例:

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

我们看下格式:

<object id="Service.Permission" type="Service.ServiceImp.PermissionManage,Service" singleton="false"></object>

<object id="定义一个唯一的名字" type="接口实现类,Service" singleton="false"></object>

名字自己定义一个就可以,没有什么特别的规范,只是要唯一,我们在webpage\config 里要用到这个名字,两者保持一致便可。

接口实现类就是命名空间+实现类的类名,以上面的(Service.ServiceImp.PermissionManage)为例,我们看下我们这个实现类:

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

这样,Service\config 下面的xml如何配置,大家知道如何使用了吧。那我们再来看下webpage\config 里面的xml配置,我们以Controllers.xml为例:

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

我们看下格式:

<!--登录控制器-->
<object type="WebPage.Areas.SysManage.Controllers.AccountController,WebPage" singleton="false">
<property name="UserManage" ref="Service.User"/>
<property name="UserOnlineManage" ref="Service.UserOnlineManage"/>
</object>

<!--登录控制器-->
<object type="控制器,WebPage" singleton="false">
<property name="声明的容器名称" ref="在配置Service\config时定义的id"/>
<property name="声明的容器名称" ref="在配置Service\config时定义的id"/>
</object>

 

首先,我们添加一个object标签 type 我们的控制器

<object type="WebPage.Areas.SysManage.Controllers.AccountController,WebPage" singleton="false">
</object>

然后,我们这里需要用到两个接口:一个是用户管理,一个是用户在线状态

那么我们添加两个 property标签:

<property name="UserManage" ref="Service.User"/>
<property name="UserOnlineManage" ref="Service.UserOnlineManage"/>

注意:这里property 的属性 name 的值 要跟控制器里声明的容器的名称一致

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

 

这样,就实现了。然后,有朋友问,一定要这么复杂的配置么?其实,service\config里配置完,在webpage\config里不配置也是可以的,那么不配置Controllers.xml 如何调用呢?细心的朋友可能已经发现了,我们在BaseCotroller控制器里就没有使用xml配置,在webpages\Models\CommonHelper.cs中也没有使用xml配置:

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

对于Spring的使用,详细的讲解和专业的术语如何表述,请大家移步度娘。

 

 

我们再来看下大家也是有很多问题的UserManage实现类:

//用户登录验证

public Domain.SYS_USER UserLogin(string useraccount, string password) 这个应该没什么可讲的,大家都一目了然。

//是否为超级管理员

 public bool IsAdmin(int userId) 这个就一点说明一下 return roles.ToList().Any(item => item.ID == ClsDic.DicRole["超级管理员"])  这里是用到了字典(是不是比较鸡肋),我们在应用类库Common下的Enums.cs中有这么一个

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目也是就判断我们当前登录用户的ID是否等于我们定义的超级管理员的ID。

 

然后,我们再来看下 public Account GetAccountByCookie() 和 public bool Remove(int userId) 这两个是一样的,这两个都调用了外部接口,我们看下我们这个类的开始部分

 

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

大家是不是在使用的时候会出现这么一个错误:未将对象引用到实例?

包括在控制中,我们调用接口的时候,出现这个错误,大部分的原因就是:没有注入。

控制器的注入我们上面刚刚讲过了,我们看下接口调用外部接口是如何注入的。service\config\service.xml

【无私分享:从入门到精通ASP.NET MVC】从零开始,一起搭框架、做项目 (14)附数据库、发布项目

 

大家发现了吧 我们在object标签下 也添加了property标签。上面我们讲过了控制器如何不使用xml实现注入,这里大家是否也可以尝试一下。

 

 

好了,已发布的项目和数据库:百度网盘

 

带密码啊?是的,娱乐一下,已推荐+单数楼层留下邮箱,密码发给你。o(*≧▽≦)ツ  大家抓紧,网盘会失效的。

 

说明:大家可以直接放到IIS里架起来,数据库在App_Data\DataBase 里面。

数据库连接需要修改两个地方:① web.config 里面的数据库连接   ② log4net.config 里面的数据库连接 (我们的日志不是存在txt里是存到数据库里的)

还有,这个是单点登录,如果不需要,请修改config\website.config 找到 <add key="IsSingleLogin" value="True"/> 改为False

 

 

原创文章 转载请尊重劳动成果 http://yuangang.cnblogs.com

33楼Jarod_li
谢谢分享,一直跟着做。
32楼New~
83699462@qq.com 单层 哈哈 谢谢
31楼苦逼
867777944@qq.com 谢谢
30楼猎风
809367402@qq.com 楼主辛苦了
29楼BlinZhang
已推荐zhangbao_459339484@qq.com
28楼无 尘
455295466@qq.com 谢谢
27楼bobo2012
liubo_20080808@hotmail.com 楼主辛苦了,谢谢分享。
26楼Clarkzfj
526511681@qq.com 真是单层发啊?????????????????
25楼雨点源码
249702282@qq.com
24楼一生的爱恋
发我一份吧 谢谢了 1053727080@qq.com
23楼mj_L
962453535@qq.com 已推荐了,麻烦发一份
22楼菜鸟小白
274135279@qq.com
21楼panjk
学习学习~junkun2560@163.com
20楼离谱
25332272@qq.com 辛苦了!!
19楼KevanAdmin
3232134397@qq.com
18楼New~
83699462@qq.com,谢谢
17楼dongger
416263499@qq.com,求源码,已顶。
16楼不知名妖
942217633@qq.com 已推荐
15楼蜗牛弟弟
1014092791@qq.com,已推荐 求密码
14楼众生少两千
额。。大侠,那个登录密码是多少哦?.....
13楼懵懂
iamxiaotong@msn.com 单层 辛苦了
12楼New~
单层啊 双层怎么搞啊
11楼不知名妖
942217633@qq.com 单层楼
10楼终究不过一场空
liudc76@qq.com,已推荐,谢谢大神
9楼New~
83699462@qq.com 谢谢
8楼lihaihua
lhh20130504@126.com 能否一下,参考一下,正在学习MVC, 谢谢! 楼主辛苦了!
7楼曙光闪现
已推荐593103283@qq.com 谢谢
6楼懵懂
iamxiaotong@msn.com 辛苦了
5楼是耶非耶
chenhw0001@163.com,正在学MVC,多谢
4楼Jarod_li
我的邮箱:574613555@qq.com,谢谢。
3楼luoliurong
55607767@qq.com 已推荐
2楼果冻布丁喜之郎
----------以上,单楼层已全部发送完毕~~~~~~------------------------------
1楼是耶非耶
chenhw0001@163.com,正在学MVC,多谢,,上层双数。。。