在上一篇<学习MVC之租房网站(四)-实现Service层并进行单元测试>中,记录了实现Service层并进行单元测试的过程,接下来该到“正题”-MVC了,也就是UI层的开发。

网站分为前台、后台两部分,因为后台涉及到一些在业务上来说基础的东西,比如用户管理、房源编辑等,所以先完成后台UI即AdminWeb项目。那么就从权限、角色、用户这一块开始了。


一、用户管理

只通过对与用户管理相关的功能的开发,来回顾MVC的基本操作。

1. Controller

添加AdminUserController,添加List动作以查找并展示所有的用户列表,在List动作中要调用AdminUserService.GetAll()方法,但不会直接调用。之前已经准备好了IService层,还要在Application_Start中设置Autofac为ASP.NET MVC的默认解析器,以后所有的Controller将由Autofac管理。

用户的增删改查要涉及到用户所在的城市、所属的角色,所以除了AdminUserService,AdminUserController还会调用CityService和RoleService中的方法,那么就把这三个接口声明为属性,Autofac解析控制器时会自动为这些属性注入对应的实现类,到这儿开始对IOC的优势有点体会了。

然后,如果要查找用户列表,只需_AuService.GetAll()。

2. Model

List方法如下:

GetAll()返回的是AdminUserDTO[],于是就直接把AdminUserDTO[]结果集送给View了,这儿并没有指定专门的Model,而且DTO(Data Transfer Object)的本意就是用来转运数据的,由此可见理论与实践的差别,要善于变通而不是恪守理论。

3. View

视图文件使用了VS自带的razor模板引擎,文件后缀为.cshtml,没用过其它模板引擎,但至少跟aspx相比还是让人相当“眼前一亮”的,眼前一亮要加引号,是因为想到razor出来已经很多年了,当年最早的razor使用者们的感受应该会是眼前一亮吧,而若干年后的某一天,菜鸟在看到razor时的感受想必与他们也非常类似,由此幻想跨越时空,感叹技术的日新月异。

但我也是谨遵古训,尽量离@HtmlHelper控件远一点,多使用原始的Html元素。在头部要写清楚传过来的Model为AdminUserDTO[],而且生成的最终html文件的title为Admin List

套用的模板为H-ui,看起来挺好的


二、细节和体会

过程中,有一些细节和收获也记录一下

1. 为了预防CSRF攻击,Ajax的GET请求被禁用,所以Ajax请求不要忘了设置为POST类型。关于CSRF有待学习。

2. 之前一直不明白MVC项目为什么在View文件夹下还有一个web.config,现在知道了他的作用之一便是为了给cshtml中的代码指定命名空间

3. 现代浏览器多有预加载功能,一些直接写在html属性的超链接可能被浏览器提前执行,所以删除等操作最好写在事件中

4. 看一些例子,有时一个视图会有多个Model,本次项目也有不少这样的情况,例如AdminUserAddModel与AdminUserAddViewModel,Model是用来在Controller与View之间交互数据的,分成两个Model时,一般是为了应对展示的数据(GET)与保存的数据(POST)存在差异的情况,如AdminUserAddModel用于保存(View->Controller),AdminUserAddViewModel用于展示(Controller->View)。

注:

课程内容来自如鹏网(www.rupeng.com),专注于大学生就业的在线教育平台;

ASP.NET MVC课程 http://www.rupeng.com/News/9/640.shtml

欢迎关注我的个人公众号【菜鸟程序员成长记】

学习MVC之租房网站(五)-权限、角色、用户管理的更多相关文章

  1. 学习MVC之租房网站(七)-房源管理和配图上传

    在上一篇<学习MVC之租房网站(六)-用户登录和权限控制>完成了后台用户登录和权限控制功能的开发,接下来要完成的是房源的管理,用户在后台新增.编辑房源信息,供前台用户操作. 一 房源管理 ...

  2. 学习MVC之租房网站(六)-用户登录和权限控制

    在上一篇<学习MVC之租房网站(五)-权限.角色.用户管理>完成了权限.角色.用户的增删改查,现在将基于前面完成的内容,进行后台用户登录和权限控制功能的开发. 一.用户登录 用户登录涉及到 ...

  3. 学习MVC之租房网站(八)- 前台注册和登录

    在上一篇<学习MVC之租房网站(七)-房源管理和配图上传>完成了在后台新增.编辑房源信息以及上传房源配图的功能.到此后台开发便告一段落了,开始实现前台的功能,也是从用户的登录.注册开始. ...

  4. 学习MVC之租房网站(三)-编写实体类并创建数据库

    在上一篇<学习MVC之租房网站(二)-框架搭建及准备工作>中,搭建好了项目框架,并配置了EF.Log4Net和进程外Session.接下来会编写Eneity类并采用CodeFirst的方式 ...

  5. 学习MVC之租房网站(二)-框架搭建及准备工作

    在上一篇<学习MVC之租房网站(一)-项目概况>中,确定了UI+Service的“双层”架构,并据此建立了项目 接下来要编写Common类库.配置AdminWeb和FrontWeb 一.编 ...

  6. 学习MVC之租房网站(四)-实现Service层并进行单元测试

    在上一篇<学习MVC之租房网站(三)-编写Eneity类并创建数据库>中,记录了编写Eneity类并采用CodeFirst的方式创建数据库的过程,接下来就到了Service层的实现了,并且 ...

  7. 学习MVC之租房网站(九)-房源显示和搜索

    在上一篇<学习MVC之租房网站(八)- 前台注册和登录>完成了前台用户的注册.登录.重置密码等功能,然后要实现与业务相关的功能,包括房源的显示.检索等. 一 房源显示 房源显示内容较多,涉 ...

  8. 学习MVC之租房网站(十)-预约和跟单

    在上一篇<学习MVC之租房网站(九)-房源显示和搜索>完成了房源的显示.检索,然后是用户的预约看房,以及后台操作员对预约看房的跟单操作. 预约看房仅有将预约信息保存到对应表的操作,预约表有 ...

  9. 学习MVC之租房网站(十二)-缓存和静态页面

    在上一篇<学习MVC之租房网站(十一)-定时任务和云存储>学习了Quartz的使用.发邮件,并将通过UEditor上传的图片保存到云存储.在项目的最后,再学习优化网站性能的一些技术:缓存和 ...

随机推荐

  1. 富文本NSAttributeString

    例子:http://www.jianshu.com/p/9ffcdc0003e0 下面研究下AttributedString究竟可以设置哪些属性,具体来说,有以下21个:   // NSFontAtt ...

  2. Hadoop单机和伪分布式安装

    本教程为单机版+伪分布式的Hadoop,安装过程写的有些简单,只作为笔记方便自己研究Hadoop用. 环境 操作系统 Centos 6.5_64bit   本机名称 hadoop001   本机IP ...

  3. ubuntu 切换java环境,配置单独的用户环境

    执行命令:sudo  update-alternatives --config javaThere are 2 choices for the alternative java (providing ...

  4. 前端资讯周报 3.13 - 3.19: WebVR来了!以及如何优化scroll事件性能

    每周一我都会分享上一周我订阅的技术站点中,和解决问题的过程中阅读到的值得分享的文章.这是迫使我学习的一个动力 本周推荐 Minecraft in WebVR with HTML Using A-Fra ...

  5. Google分析language垃圾信息

    最近一段时间,我在Google Analytics(以下简称GA)中查看网站数据时,发现一个非常可疑的信息: 这什么鬼? "language"这一项一般是 "zh-tw& ...

  6. ArcGIS API for JavaScript FeatureLayer服务属性编辑

    首先说一下感想吧,刚入行时感觉深似海,掉到了GIS开发的陨石大坑里了,首先是学了小半年的Flex,用到了ArcGIS API for Flex,接着又是半年的ArcEngine开发,现在终于摸到了一点 ...

  7. 关于Tarjan(3)——离线LCA

    LCA(最近公共祖先),指对于一棵树上任意两个节点往上走最早都能到达的节点. 求LCA有两种方法,一种是倍增,另一种则是Tarjan........ Tarjan巧妙利用并查集的思想: 这里的Tarj ...

  8. java 文件操作(二)---Files和Path

    自从java 7以来,引入了FIles类和Path接口.他们两封装了用户对文件的所有可能的操作,相比于java 1的File类来说,使用起来方便很多.但是其实一些本质的操作还是很类似的.主要需要知道的 ...

  9. java做帐户登录失败锁定

    对于连续失败登录应用系统5次的帐号,需锁定该帐号至少30分钟不允许登录. 这里也用简单的map集合进行判定,功能能实现,但并不是很完美,不用更改数据库的表字段 1.首先建立一个用户登陆失败的实体类 p ...

  10. 【转】JS判断SWF,JPG加载完毕、兼容(Activex,plugIn)所有浏览器

    JS判断SWF,JPG加载完毕.兼容(Activex,plugIn)所有浏览器 这里主要说下监听SWF的加载. 网上流传已久的监听方法,只能在IE(Activex插件下)下实现.在使用plugin的浏 ...