不知不觉已经过了13讲,(本来还要讲多一讲是,数据验证之自定义验证,基于园友还是对权限这块比较敢兴趣,讲不讲验证还是看大家的反映),我们应该对系统有一个小结。
首先这是一个团队开发项目,基于接口编程,我们从EasyUI搭建系统的框架开始,开始了一个样例程序对EasyUI的DataGrid进行了操作,并实现Unity的注入到容器,使程序
的性能大大提升,代码质量上升,更佳利于单元测试,使用日志和异常坚固系统稳定性等等。。。。
当然你应该觉得系统还有存在很多不足,我们应该动手来优化一下。
下面我罗列了需要优化的项目,如果你觉得还有优化的,请提交,我将加入以后的文章中去
- UI方面,我们的easyui window弹出窗体,是不是没有居中,好丑啊;
- DataGrid虽然我在绑定时候写入了根据第一次窗体的变化去适应框架,这时你点击游览器的缩小或者扩大按钮,那么你的DataGrid变形了;
- JS我们在Details页面引入了JS,我们是否应该把他嵌入到_Layout_----里面去?并进行捆绑?
- 我们DataGrid返回的日期格式是/Date(20130450000365)你看得懂吗?
- 我们的BLL每次都要去实例化 DBContainer db = new DBContainer();重复操作,我们是不是应该写一个BaseBLL基类类继承
- 我们前端很多提示信息都一样,是不是应该封装起来,比如点击:Details时没有选择提示的“请选择要操作的记录”
- 工具栏的增、删、改按钮一样每次粘贴的代码也不少,我们应该扩展Mvc的HtmlHelper的封装,之后我们@html.就出来了多方便,以后还用于权限控制
优化后的系统将可能做为最后一个发布源码的版本,
如无必要以后不再提供源码下载
,但所讲的内容中,将全部包含完整源码,请你将完成的系统“珍藏”起来,因
为这是你的劳动成果
最后我们将接受一个更大的目标挑战,权限管理系统。我觉得这个是大家最关心的事情了,但是在此之前,我们将要补充一些知识。
- MVC自带的过滤器用法
- MVC路由Rotun概念
权限系统讲完了,我们讲T4模板,导出报表和图表,
文件上传
,系统设置等等补充..让我们的系统拿出来就能当项目来用。
由于接下来的东西逻辑性和编码都要比之前的复杂很多,所以更新可能会比以前慢。请大家耐心等待,谢谢园友的支持,无论多忙我都会不断的更新
现在我们先来解决以上7个问题吧!
1.UI方面,我们的easyui window弹出窗体,是不是没有居中,好丑啊;
Easyui 让Window弹出居中
2.DataGrid虽然我在绑定时候写入了根据第一次窗体的变化去适应框架,这时你点击游览器的缩小或者扩大按钮,那么你的DataGrid变形了;
Easyui 让DataGrid适应浏览器宽度
3.JS我们在Details页面引入了JS,我们是否应该把他嵌入到_Layout_----里面去?并进行捆绑?
我已经进行压缩了.源码带出.
4.我们DataGrid返回的日期格式是/Date(20130450000365)你看得懂吗?
MVC解决Json DataGrid返回的日期格式是/Date(20130450000365)
5.我们的BLL每次都要去实例化 DBContainer db = new DBContainer();重复操作,我们是不是应该写一个BaseBLL基类类继承
我已经进行分离,源码带出.
6.我们前端很多提示信息都一样,是不是应该封装起来,比如点击:Details时没有选择提示的“请选择要操作的记录”
在App.Common加入以下类Suggestion
在视图中的使用
$( " #btnDelete " ).click(function () { var row = $( ' #List ' ).datagrid( ' getSelected ' ); if (row != null ) { $.messager.confirm( ' 提示 ' , ' @Suggestion.YouWantToDeleteTheSelectedRecords ' , function (r) { if (r) { $.post( " /SysSample/Delete?id= " + row.Id, function (data) { if (data.type == 1 ) $( " #List " ).datagrid( ' load ' ); $.messageBox5s( ' 提示 ' , data.message); }, " json " ); } }); } else { $.messageBox5s( ' 提示 ' , ' @Suggestion.PlaseChooseToOperatingRecords ' ); } });
@Suggestion.PlaseChooseToOperatingRecords '
7.工具栏的增、删、改按钮一样每次粘贴的代码也不少,我们应该扩展Mvc的HtmlHelper的封装,之后我们@html.就出来了多方便,以后还用于权限控制
这个必须返回MvcHtmlString和在视图中引入命名空间。在App.Admin的Core文件夹中新建类ExtendMvcHtml
并加入以下代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.Mvc; using App.Models.Sys; namespace App.Admin { public static class ExtendMvcHtml { /// <summary> /// 普通按钮 /// </summary> /// <param name="helper"> htmlhelper </param> /// <param name="id"> 控件Id </param> /// <param name="icon"> 控件icon图标class </param> /// <param name="text"> 控件的名称 </param> /// <param name="hr"> 分割线 </param> /// <returns> html </returns> public static MvcHtmlString ToolButton( this HtmlHelper helper, string id, string icon, string text, bool hr) { StringBuilder sb = new StringBuilder(); sb.AppendFormat( " <a id=\"{0}\" style=\"float: left;\" class=\"l-btn l-btn-plain\"> " , id); sb.AppendFormat( " <span class=\"l-btn-left\"><span class=\"l-btn-text {0}\" style=\"padding-left: 20px;\"> " , icon); sb.AppendFormat( " {0}</span></span></a> " , text); if (hr) { sb.Append( " <div class=\"datagrid-btn-separator\"></div> " ); } return new MvcHtmlString(sb.ToString()); } } }
并在视图中使用它,使用例子!
@Html.ToolButton( " btnQuery " , " icon-search " , " 查询 " , true ) @Html.ToolButton( " btnCreate " , " icon-add " , " 新增 " , true ) @Html.ToolButton( " btnEdit " , " icon-edit " , " 编辑 " , true ) @Html.ToolButton( " btnDetails " , " icon-details " , " 详细 " , true ) @Html.ToolButton( " btnDelete " , " icon-remove " , " 删除 " , true ) @Html.ToolButton( " btnExport " , " icon-export " , " 导出 " , true )
迄今为止,我们7个问题已经陆续改完了,由于可能是最后一次发布【源码含数据库,完整的增删改查例子】,我想做一个不是很“人道”的事情
源码我将发布到共享37509873
如果你想获得一份源码,希望大家来加入Asp.net高级讨论群
出处: http://ymnets.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。