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

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

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

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

后台登录界面:

首页:

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

一 HTML5表单的异步提交验证

a) 表单验证

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

另外,即使浏览器支持,但感觉验证并不严密,比如邮箱输入类似[email protected]竟然也可以通过验证,所以还是自己写正则表达式靠谱。非空校验要单独添加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类时都要回到这儿建立手动映射,显然有点不便,应该有更简便的方法有待试验。

时间: 2024-12-12 04:15:51

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

MVC与单元测试实践之健身网站(一)-项目概述

前不久刚刚通过租房网站的开发学习了MVC,并随后学习了单元测试相关的基础,现在开始健身网站的开发,该项目将结合MVC与单元测试,在开发实践过程中,趁热打铁,巩固并运用之前的内容. 一 健身网站功能描述 关于健身网站的需求,主要从个人日常锻炼的需要出发,以达到辅助锻炼的目的.各应用商店中健身相关的APP也有不少,但始终无法找到一款很好满足增肌训练的.不花哨的.去社交化的.无跑步宗教的应用.于是刚好通过健身网站的开发,学习MVC和单元测试:如果顺利完成的话,也可作为日常锻炼之用. 网站的主要功能是:

MVC与单元测试实践之健身网站(完)-备案与部署

主页-http://www.zhixin9001.cn/Home/Introduce GitHub- https://github.com/zhixin9001/Fitness 这是关于Fit网站的最后一篇,这几天网站备案审核通过,以后就可以正式使用了. 项目过程中学习了MVC.单元测试.Bootstrap.IOC等内容,也体验了云存储.虚机的使用(共享虚机). 域名备案真是麻烦极了,要在网上提交申请,拍照上传照片,下载打印三张纸质申请单,开始时没看清楚陕西地区的日期不能写还作废了好几张,然后还

MVC与单元测试实践之健身网站(四)-动作管理

网站后台负责进行动作的管理,包括动作名称.介绍.训练要点.配图等内容,以便前台能够使用这些内容.在上一篇< Fit项目图片上传和云存储的调通>中已经准备好了这里涉及到的主要技术难点,现在就开始完成该模块了. 一 列表介绍 健身管理模块包括肌群.肌肉的显示以及动作的管理.这儿也算是开始涉及"业务内容"了,还好我之前有储备了一些关于健身的资料,现在是时候派上另一种用场了. a) 肌群和肌肉因为内容相对固定,所以为了减少业务逻辑以及单元测试的代码量,当然最主要是为了偷懒,就只提供

MVC与单元测试实践之健身网站(六)-计划的添加与重置

健身计划需要使用者自己定制,没有现成的内容可供选择.本篇就是关于健身计划的添加与重置功能的一部分. 一 功能描述 a) 关于计划的定制,决定以周期的方式,比如有人会以一周为周期,然后安排每周的1.3.5进行锻炼.系统将以以这种模式为典型来实现,首先需要设定一个周期循环的天数,然后为其中的某些天安排特定的锻炼内容,剩下没有安排的天数为休息时间. 为某一天安排具体的锻炼内容时,数据来自通过后台添加的训练项目,这块的功能之前已经完成.因为训练项目分成了两类,一类是对局部肌肉的锻炼,另一类是全身性的综合

MVC与单元测试实践之健身网站(八)-统计分析

?统计分析模块与之前的内容相对独立,用于记录并跟踪各部位围度的变化.还需提供对所作计划的分析,辅助使计划更合理. 一 围度记录 这儿可以记录各项身体围度指标,现在包括体重在内身体上上下下基本全部提供了,虽然貌似用处不大,所以这个界面并不做非空校验,但会有对输入格式的限制,必须是整数或一位小数. 二 围度变化 有了上一步记录的数据后,就可以基于这些数据,以图表的形式直观地反映围度的变化了. a) 模板提供了各种图表插件,最后选择了flotchart,需求比较基础,完全可以满足.用起来也挺方便: 放

MVC与单元测试实践之健身网站(七)-添加计划

?计划的制定涉及到周期-动作包-动作的关联操作,在上一篇<计划的添加与重置>完成了周期的设置.动作包的添加,现在要完成的是动作的添加操作. 一 具体功能 a) 在选定了一个大周期具有的天数后,可以对具体的某一天配置动作包.一个动作包下可以有多个动作,比如3天中的第1天配置了两项动作 b) 点击添加,可以继续增加更多的内容 添加界面糅合了局部训练和综合训练的两套逻辑,不同的训练类型操作界面不同.为了复用一部分html元素和js函数,页面搞得很大,最后js函数仍有20多个,有winform的笨重感

【转】ASP.NET MVC 的最佳实践

[这个职位基于创作的本 · 格罗弗 (在 Microsoft 高级开发人员) 的文档. 它是我们打算将此信息集成到 MSDN 上的 MVC 3 文档. 我们希望你的来信和欢迎您可能提出的任何建议.] 本文档提供了一套旨在帮助创建坚实的应用程序的 ASP.NET MVC 开发人员的编码准则. 当然,它是您作为决定,这些准则是适合您的应用程序开发人员. 模型的建议 该模型是用于定义特定于域的对象. 这些定义应包括业务逻辑 (如何对象的行为和涉及). (什么是有效的值为给定的对象) 的验证逻辑. (如

ASP.NET MVC 的最佳实践

[这个职位基于创作的本 · 格罗弗 (在 Microsoft 高级开发人员) 的文档. 它是我们打算将此信息集成到 MSDN 上的 MVC 3 文档. 我们希望你的来信和欢迎您可能提出的任何建议.] 本文档提供了一套旨在帮助创建坚实的应用程序的 ASP.NET MVC 开发人员的编码准则. 当然,它是您作为决定,这些准则是适合您的应用程序开发人员. 模型的建议 该模型是用于定义特定于域的对象. 这些定义应包括业务逻辑 (如何对象的行为和涉及). (什么是有效的值为给定的对象) 的验证逻辑. (如

atitit.jndi的架构与原理以及资源配置and单元测试实践

atitit.jndi的架构与原理以及资源配置and单元测试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin  <database>  节点 3 3.2. tomcat    <resource 标签 4 3.3. 自定义资源 5 4. JNDI测试支持: 5 4.1. D:\workspace\wxb\src\jndi4t.xml 6 4.2. applicationContext.xml 7 4.3. jdbc.propert