码迷,mamicode.com
首页 > Web开发 > 详细

MVC与单元测试实践之健身网站(二)-管理员模块

时间:2017-06-03 23:35:02      阅读:451      评论:0      收藏:0      [点我收藏+]

标签:mail   form   对象   开发   表达式   表单   模板   操作   实现   

开始动手做这个项目时,发现无法做到完全的先设计、再编码,于是决定分模块进行,从管理员模块开始设计、编码,而且接口就已经改了好几次了。

管理员模块涉及的功能有登录和后台对管理员的维护,其中也涉及前端的开发。UI模板使用Inspinia,感觉这套模板功能丰富、界面美观,而且基于HTML5和BootStrap,对这两方面的知识也可以多些了解。

在上一篇<如何在单元测试时隔离ORM>中,解决了对Service层进行测试怎样构建伪对象的问题,随后管理员模块的Service层和单元测试在齐头并进中完成了;前端基于模板套出的界面也好了。

后台登录界面:

 技术分享

 

首页:

 技术分享

 

管理员的维护尚未完成,这儿记录两个之前遇到的问题:HTML5表单的异步提交验证以及关于Autofac待注入对象的初始化的一个问题。

 

一 HTML5表单的异步提交验证

a) 表单验证

本来计划表单的验证使用ValidForm组件,但遇到了一些莫名其妙无法解决的样式问题,只好使用HTML5自带的表单验证,直接支持email、url等的校验,但对浏览器有限制

 技术分享

 

另外,即使浏览器支持,但感觉验证并不严密,比如邮箱输入类似email@abc竟然也可以通过验证,所以还是自己写正则表达式靠谱。非空校验要单独添加required属性。

 

b) 表单异步提交

HTML5原生的校验颜色比ValidForm漂亮,但之前只知道需要点击submit按钮才能触发校验,这是放弃原生校验尝试ValidForm的直接原因,但ValidForm搞不定后,只好寻求HTML异步提交的方法,其实很方便:

 技术分享

 

在注册的$("#formLogin").submit方法中,使用$(this).ajaxSubmit(options)替换了点击submit时的事件行为,进行ajax异步提交。

 

 


 

 

二 关于Autofac,在待注入对象的构造函数需要参数时的配置问题

为了在对Service层的单元测试时隔离EF,在Service层和EF操作之间增加了IRepositoty接口及其实现,在初始化AdminUserService时要在其构造函数中传递AdminUserRepository参数

 技术分享

 

在单元测试时可以手工传递,但在Controller中注入AdminUserService时却不能这样做了,需要配置Autofac在初始化AdminUserService要使用的IRepository<AdminUserEntity>对象。

 技术分享

 

在AutofacConfig的代码中,最简单的情况是只需要注册Controller和IService接口的实现类,现在则还需要注册以Reposiroty结尾的类(a.Name.EndsWith("Repository")),因为这里规定实现IRepository的类统一以” Repository”结尾,然后通过builder.Register(a => new AdminUserService( (IRepository<AdminUserEntity>)a.Resolve(typeof(IRepository<AdminUserEntity>))))来配置Autofac在初始化AdminUserService类时为构造函数传递的参数为IRepository<AdminUserEntity>。采用这种配置方式的话,意味着后续每当增加新的Service类时都要回到这儿建立手动映射,显然有点不便,应该有更简便的方法有待试验。

MVC与单元测试实践之健身网站(二)-管理员模块

标签:mail   form   对象   开发   表达式   表单   模板   操作   实现   

原文地址:http://www.cnblogs.com/zhixin9001/p/6938756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!