在上一篇<学习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. Robot Framework自动化测试环境部署

    文档版本:v1.0 作者:令狐冲 如有问题请发邮件到:1146009864@qq.com 使用Robot Framework框架(以下简称RF)来做自动化测试. 模块化设计 1.所需环境一览表 软件 ...

  2. 蓝牙DA14580开发:固件格式、二次引导和烧写

    嵌入式企鹅圈原创团队成员黄鑫提供. 相比NRF52832和CC254X,蓝牙单芯片DA14580在OTA和二次引导上要复杂一些,不仅体现在memory map.引导过程等流程上,而且在固件格式.生成和 ...

  3. ubuntu Error mounting /dev/sda6 at /media/xxx...

    问题原因:可能是windows没有完全关机,详细请看我的另一博文: http://www.cnblogs.com/ediszhao/p/3794459.html 为了学习linux我装了双系统,因为我 ...

  4. 更加 "深入" 理解多态

    1.1 public abstract class Birds{ //什么样的方法是抽象方法 public abstract void Fly(); } public class YZ:Birds{ ...

  5. SpringMVC中@RequestBody引起的400异常处理,返回校验失败具体信息

    问题 使用@RequestBody接收一个json数据的时候,如果传入的参数不符合条件,就会直接返回400的error page. 但究竟是为什么会400并没有抛出来.这对大量参数字段的我们来说,排错 ...

  6. Windows 10 IoT Serials 7 – 如何用树莓派制作家庭流媒体播放器

    Windows 10平台引入了AllJoyn开源软件框架,它提供了一组服务可以创建动态近端网络,让设备可以相互连接实现功能交互.目前,AllJoyn开源软件框架由AllSeen联盟负责管理.AllSe ...

  7. iOS 组件化

    iOS 组件化介绍 随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间 ...

  8. Hive(笔记)

    (2015.07.22Hive笔记) 一.Hive的安装 1.1Hive的安装过程 下载hive源文件(apache-hive-0.14.0-bin.tar.gz ) 解压hive文件 进入$HIVE ...

  9. 相机标定:kalibr标定工具箱使用总结

    1 多相机标定 1.1采集图像和IMU 1.2制作Bag包 1)组织文件结构 ~/kalibr_workspace/test/stereo_calib bagsrc cam0 (1+time(0))* ...

  10. 如何在Ubuntu_16_04下使用MySql的GR

    一.前言 该文章主要是记录下从一个纯净的系统开始如何安装MySql 5.7.17 并且使用GR,以便于自己后期查看以及分享给他人. 二.安装mysql 因为默认ubuntu的源并不是最新的mysql所 ...