原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-系统小结

不知不觉已经过了13讲,(本来还要讲多一讲是,数据验证之自定义验证,基于园友还是对权限这块比较敢兴趣,讲不讲验证还是看大家的反映),我们应该对系统有一个小结。
首先这是一个团队开发项目,基于接口编程,我们从EasyUI搭建系统的框架开始,开始了一个样例程序对EasyUI的DataGrid进行了操作,并实现Unity的注入到容器,使程序
的性能大大提升,代码质量上升,更佳利于单元测试,使用日志和异常坚固系统稳定性等等。。。。

当然你应该觉得系统还有存在很多不足,我们应该动手来优化一下。
下面我罗列了需要优化的项目,如果你觉得还有优化的,请提交,我将加入以后的文章中去

  1. UI方面,我们的easyui window弹出窗体,是不是没有居中,好丑啊;
  2. DataGrid虽然我在绑定时候写入了根据第一次窗体的变化去适应框架,这时你点击游览器的缩小或者扩大按钮,那么你的DataGrid变形了;
  3. JS我们在Details页面引入了JS,我们是否应该把他嵌入到_Layout_----里面去?并进行捆绑?
  4. 我们DataGrid返回的日期格式是/Date(20130450000365)你看得懂吗?
  5. 我们的BLL每次都要去实例化 DBContainer db = new DBContainer();重复操作,我们是不是应该写一个BaseBLL基类类继承
  6. 我们前端很多提示信息都一样,是不是应该封装起来,比如点击:Details时没有选择提示的“请选择要操作的记录”
  7. 工具栏的增、删、改按钮一样每次粘贴的代码也不少,我们应该扩展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

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace App.Common
  7. {
  8. public static class Suggestion
  9. {
  10. public static string PlaseChooseToOperatingRecords { get { return "请选择要操作的记录"; } }
  11. public static string AreYouLogOff { get { return "您确定要注销系统吗?"; } }
  12. public static string Cancel { get { return "取消"; } }
  13. public static string CanNotOperationHasTheAudit { get { return "不能操作已经审核的记录"; } }
  14. public static string Check { get { return "审核"; } }
  15. public static string CheckFail { get { return "审核失败"; } }
  16. public static string CheckSucceed { get { return "审核成功"; } }
  17. public static string ClearLossJobs { get { return "清理离线任务"; } }
  18. public static string Close { get { return "关闭"; } }
  19. public static string CloseAll { get { return "关闭全部"; } }
  20. public static string CloseLeft { get { return "关闭左侧标签"; } }
  21. public static string CloseOther { get { return "除此之外全部关闭"; } }
  22. public static string CloseRight { get { return "关闭右侧标签"; } }
  23. public static string Create { get { return "创建"; } }
  24. public static string Delete { get { return "删除"; } }
  25. public static string DeleteFail { get { return "删除失败"; } }
  26. public static string DeleteSucceed { get { return "删除成功"; } }
  27. public static string Details { get { return "详细"; } }
  28. public static string Disable { get { return "不可用"; } }
  29. public static string Edit { get { return "编辑"; } }
  30. public static string EditFail { get { return "修改失败"; } }
  31. public static string EditSucceed { get { return "修改成功"; } }
  32. public static string Export { get { return "导出"; } }
  33. public static string InsertFail { get { return "创建失败"; } }
  34. public static string InsertSucceed { get { return "创建成功"; } }
  35. public static string Loading { get { return "加载中"; } }
  36. public static string LoginSucceed { get { return "登录成功,您可以继续操作!"; } }
  37. public static string LogOff { get { return "安全退出"; } }
  38. public static string NoAnyChanges { get { return "没有作任何修改"; } }
  39. public static string Operate { get { return "操作"; } }
  40. public static string PrimaryRepeat { get { return "主键重复"; } }
  41. public static string Query { get { return "查询"; } }
  42. public static string Reload { get { return "刷新"; } }
  43. public static string Return { get { return "返回"; } }
  44. public static string Save { get { return "保存"; } }
  45. public static string Select { get { return "选择"; } }
  46. public static string SetFail { get { return "设置失败"; } }
  47. public static string SetSucceed { get { return "设置成功"; } }
  48. public static string SwitchingSkin { get { return "切换主题,系统将重新加载?"; } }
  49. public static string Tip { get { return "提示"; } }
  50. public static string UnCheck { get { return "反审核"; } }
  51. public static string UnCheckFail { get { return "反审核失败"; } }
  52. public static string UnCheckSucceed { get { return "反审核成功"; } }
  53. public static string UnSelect { get { return "反选"; } }
  54. public static string Update { get { return "更新"; } }
  55. public static string UpdateFail { get { return "更新失败"; } }
  56. public static string UpdateSucceed { get { return "更新成功"; } }
  57. public static string UpLoad { get { return "上传"; } }
  58. public static string UserTimeOver { get { return "用户登录超时,请重新登录"; } }
  59. public static string Welcome { get { return "您好,欢迎您"; } }
  60. public static string YouCanOnlyOperateARecord { get { return "一次只能操作一条记录"; } }
  61. public static string YouWantToDeleteTheSelectedRecords { get { return "您确定要删除所选记录吗?"; } }
  62.  
  63. }
  64. }

  在视图中的使用

  1. $("#btnDelete").click(function () {
  2. var row = $('#List').datagrid('getSelected');
  3. if (row != null) {
  4. $.messager.confirm('提示', '@Suggestion.YouWantToDeleteTheSelectedRecords', function (r) {
  5. if (r) {
  6. $.post("/SysSample/Delete?id=" + row.Id, function (data) {
  7. if (data.type == )
  8. $("#List").datagrid('load');
  9. $.messageBox5s('提示', data.message);
  10. }, "json");
  11.  
  12. }
  13. });
  14. } else { $.messageBox5s('提示', '@Suggestion.PlaseChooseToOperatingRecords'); }
  15. });

@Suggestion.PlaseChooseToOperatingRecords'

7.工具栏的增、删、改按钮一样每次粘贴的代码也不少,我们应该扩展Mvc的HtmlHelper的封装,之后我们@html.就出来了多方便,以后还用于权限控制

  这个必须返回MvcHtmlString和在视图中引入命名空间。在App.Admin的Core文件夹中新建类ExtendMvcHtml

  并加入以下代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Web;
  6. using System.Web.Mvc;
  7. using App.Models.Sys;
  8.  
  9. namespace App.Admin
  10. {
  11. public static class ExtendMvcHtml
  12. {
  13.  
  14. /// <summary>
  15. /// 普通按钮
  16. /// </summary>
  17. /// <param name="helper">htmlhelper</param>
  18. /// <param name="id">控件Id</param>
  19. /// <param name="icon">控件icon图标class</param>
  20. /// <param name="text">控件的名称</param>
  21. /// <param name="hr">分割线</param>
  22. /// <returns>html</returns>
  23. public static MvcHtmlString ToolButton(this HtmlHelper helper, string id, string icon, string text, bool hr)
  24. {
  25.  
  26. StringBuilder sb = new StringBuilder();
  27. sb.AppendFormat("<a id=\"{0}\" style=\"float: left;\" class=\"l-btn l-btn-plain\">", id);
  28. sb.AppendFormat("<span class=\"l-btn-left\"><span class=\"l-btn-text {0}\" style=\"padding-left: 20px;\">", icon);
  29. sb.AppendFormat("{0}</span></span></a>", text);
  30. if (hr)
  31. {
  32. sb.Append("<div class=\"datagrid-btn-separator\"></div>");
  33. }
  34. return new MvcHtmlString(sb.ToString());
  35.  
  36. }
  37. }
  38. }

  并在视图中使用它,使用例子!

  1. @Html.ToolButton("btnQuery", "icon-search","查询",true)
  2. @Html.ToolButton("btnCreate", "icon-add", "新增",true)
  3. @Html.ToolButton("btnEdit", "icon-edit", "编辑", true)
  4. @Html.ToolButton("btnDetails", "icon-details", "详细", true)
  5. @Html.ToolButton("btnDelete", "icon-remove", "删除", true)
  6. @Html.ToolButton("btnExport", "icon-export","导出",true)

迄今为止,我们7个问题已经陆续改完了,由于可能是最后一次发布【源码含数据库,完整的增删改查例子】,我想做一个不是很“人道”的事情

源码我将发布到QQ群共享37509873

如果你想获得一份源码,希望大家来加入Asp.net高级讨论群

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-系统小结的更多相关文章

  1. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(1)-前言与目录(持续更新中...)

    转自:http://www.cnblogs.com/ymnets/p/3424309.html 曾几何时我想写一个系列的文章,但是由于工作很忙,一直没有时间更新博客.博客园园龄都1年了,却一直都是空空 ...

  2. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(48)-工作流设计-起草新申请 系列目录 创建新表单之后,我们就可以起草申请了,申请按照严格的表单步骤和分 ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(47)-工作流设计-补充 系列目录 补充一下,有人要表单的代码,这个用代码生成器生成表Flow_Form表 ...

  4. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(46)-工作流设计-设计分支 系列目录 步骤设置完毕之后,就要设置好流转了,比如财务申请大于50000元( ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(45)-工作流设计-设计步骤 系列目录 步骤设计很重要,特别是规则的选择. 我这里分为几个规则 1.按自行 ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(44)-工作流设计-设计表单 系列目录 设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四 ...

  7. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(43)-工作流设计-字段分类设计 系列目录 建立好42节的表之后,每个字段英文表示都是有意义的说明.先建立 ...

  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(42)-工作流设计01 工作流在实际应用中还是比较广泛,网络中存在很多工作流的图形化插件,可以做到拉拽的工 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章 ...

  10. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(41)-组织架构 本节开始我们要实现工作流,此工作流可以和之前的所有章节脱离关系,也可以紧密合并. 我们当 ...

随机推荐

  1. 鸟哥的linux私房菜——第20章 启动流程、模块管理与loader

    20.1 Linux启动流程分析 Linux启动过程: 按下开机电源后计算机硬件主动读取BIOS来加载硬件信息以及硬件系统的自我测试,之后系统会主动读取第一个可启动的设备(由BIOS设置),此时就可以 ...

  2. Linux Curses编程实现贪吃蛇

    curses库 简单而言,提供UNIX中多种终端 操作光标和显示字符 的接口.我们常见的vi就是使用curses实现的.现在一般都用ncurses库. Linux下curses函数库    Linux ...

  3. PR曲线平滑

    两天写论文中,本来设计的是要画这个Precision-Recall Curve的,因为PRC是从信息检索中来的,而且我又做的类似一个检索,所以要画这个图,但是我靠,竟然发现不好画,找了很多资料等.最后 ...

  4. union 与struct的空间计算

    一.x86 总体上遵循两个原则: 整体空间----占用空间最大的成员(的类型)所占字节数的整数倍 对齐原则----内存按结构成员的先后顺序排列,当排到该成员变量时,其前面已摆放的空间大小必须是该成员类 ...

  5. POJ 2049 Finding Nemo bfs 建图很难。。

    Finding Nemo Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 6952   Accepted: 1584 Desc ...

  6. ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller

    ASP.NET MVC中的Model(数据模型)主要包括定义数据结构.数据库读写.数据验证等等和对象处理相关的工作. 在解决方案资源管理器中找到Model文件夹,点击右键,添加一个新类,名为“Mess ...

  7. TCP带外数据读写

    #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include &l ...

  8. JSP中使用的模式——JSP+Servlet+JavaBean

    上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...

  9. Coursera《machine learning》--(6)逻辑回归

    六 逻辑回归(Logistic Regression:LR) 逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就是由于这个逻辑函数,使得 ...

  10. (转载)Convolutional Neural Networks卷积神经网络

    Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional N ...