文档章节

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

zhixin9001
 zhixin9001
发布于 2017/06/03 22:32
字数 815
阅读 32
收藏 0

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

管理员模块涉及的功能有登录和后台对管理员的维护,其中也涉及前端的开发。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类时都要回到这儿建立手动映射,显然有点不便,应该有更简便的方法有待试验。

© 著作权归作者所有

共有 人打赏支持
zhixin9001
粉丝 6
博文 101
码字总数 82518
作品 0
西安
私信 提问
基于 ThinkPHP 的内容管理系统--HuiCMS

HuiCMS是一个免费开源的轻量级PHP系统,完全采用面向对象的设计思想,基于MVC的设计模式设计开发。具有部署和应用极为简单、效率高、速度快,扩展性和可维护性高等特点。 HUICMS包括单入口文...

王_辉
2013/08/08
7.7K
3
PHPRAP 启用独立域名 www.phprap.com

PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP。 更新记录 【优化】启用独立域名 http://www.phprap.com 【修复】修复...

够过瘾
2017/11/27
1K
7
PHPRAP 1.0.2 发布,修复安装失败 Bug 和优化细节

PHPRAP,是一个PHP轻量级开源API接口文档管理系统,致力于减少前后端沟通成本,提高团队协作开发效率,打造PHP版的RAP。 更新记录 修复在MySQL5.5版本下安装数据初始化sql文件db.sql里add_t...

够过瘾
2017/11/06
496
2
.NET系列文章——近一年文章分类整理,方便各位博友们查询学习

由于博主今后一段时间可能会很忙(准备出书:《.NET框架设计—模式、配置、工具》,外加换了新工作),所以博客会很少更新; 在最近一年左右时间里,博主各种.NET技术类型的文章都写过,根据...

王清培
2014/03/02
0
0
安卓快速开发框架--AndroidOne

One框架能帮您带来什么? One框架分为两个项目,OneCore为核心工程,androidOne为演示项目,依赖oneCore One整个框架为MVC模式搭建,基于android framework为核心,集成Android世界中的主流技...

androidside
2015/12/23
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
今天
17
3
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
3
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
8
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
3
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部