专栏首页ASP.NET MVC5 后台权限管理系统构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-EasyUI缺陷修复与扩展

构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-EasyUI缺陷修复与扩展

不知不觉已经过了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弹出窗体,是不是没有居中,好丑啊;

2.DataGrid虽然我在绑定时候写入了根据第一次窗体的变化去适应框架,这时你点击游览器的缩小或者扩大按钮,那么你的DataGrid变形了;

3.JS我们在Details页面引入了JS,我们是否应该把他嵌入到_Layout_----里面去?并进行捆绑?

  我已经进行压缩了.源码带出. 4.我们DataGrid返回的日期格式是/Date(20130450000365)你看得懂吗?

5.我们的BLL每次都要去实例化 DBContainer db = new DBContainer();重复操作,我们是不是应该写一个BaseBLL基类类继承

  我已经进行分离,源码带出. 6.我们前端很多提示信息都一样,是不是应该封装起来,比如点击:Details时没有选择提示的“请选择要操作的记录”

  在App.Common加入以下类Suggestion

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace App.Common
{
    public static class Suggestion
    {
        public static string PlaseChooseToOperatingRecords { get { return "请选择要操作的记录"; } }
        public static string AreYouLogOff { get { return "您确定要注销系统吗?"; } }
        public static string Cancel { get { return "取消"; } }
        public static string CanNotOperationHasTheAudit { get { return "不能操作已经审核的记录"; } }
        public static string Check { get { return "审核"; } }
        public static string CheckFail { get { return "审核失败"; } }
        public static string CheckSucceed { get { return "审核成功"; } }
        public static string ClearLossJobs { get { return "清理离线任务"; } }
        public static string Close { get { return "关闭"; } }
        public static string CloseAll { get { return "关闭全部"; } }
        public static string CloseLeft { get { return "关闭左侧标签"; } }
        public static string CloseOther { get { return "除此之外全部关闭"; } }
        public static string CloseRight { get { return "关闭右侧标签"; } }
        public static string Create { get { return "创建"; } }
        public static string Delete { get { return "删除"; } }
        public static string DeleteFail { get { return "删除失败"; } }
        public static string DeleteSucceed { get { return "删除成功"; } }
        public static string Details { get { return "详细"; } }
        public static string Disable { get { return "不可用"; } }
        public static string Edit { get { return "编辑"; } }
        public static string EditFail { get { return "修改失败"; } }
        public static string EditSucceed { get { return "修改成功"; } }
        public static string Export { get { return "导出"; } }
        public static string InsertFail { get { return "创建失败"; } }
        public static string InsertSucceed { get { return "创建成功"; } }
        public static string Loading { get { return "加载中"; } }
        public static string LoginSucceed { get { return "登录成功,您可以继续操作!"; } }
        public static string LogOff { get { return "安全退出"; } }
        public static string NoAnyChanges { get { return "没有作任何修改"; } }
        public static string Operate { get { return "操作"; } }
        public static string PrimaryRepeat { get { return "主键重复"; } }
        public static string Query { get { return "查询"; } }
        public static string Reload { get { return "刷新"; } }
        public static string Return { get { return "返回"; } }
        public static string Save { get { return "保存"; } }
        public static string Select { get { return "选择"; } }
        public static string SetFail { get { return "设置失败"; } }
        public static string SetSucceed { get { return "设置成功"; } }
        public static string SwitchingSkin { get { return "切换主题,系统将重新加载?"; } }
        public static string Tip { get { return "提示"; } }
        public static string UnCheck { get { return "反审核"; } }
        public static string UnCheckFail { get { return "反审核失败"; } }
        public static string UnCheckSucceed { get { return "反审核成功"; } }
        public static string UnSelect { get { return "反选"; } }
        public static string Update { get { return "更新"; } }
        public static string UpdateFail { get { return "更新失败"; } }
        public static string UpdateSucceed { get { return "更新成功"; } }
        public static string UpLoad { get { return "上传"; } }
        public static string UserTimeOver { get { return "用户登录超时,请重新登录"; } }
        public static string Welcome { get { return "您好,欢迎您"; } }
        public static string YouCanOnlyOperateARecord { get { return "一次只能操作一条记录"; } }
        public static string YouWantToDeleteTheSelectedRecords { get { return "您确定要删除所选记录吗?"; } }

    }
}

  在视图中的使用

$("#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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单

    设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步。 ? 开始之前先说说表的结构。 其实表Flow_Form与Flow_FormContent...

    用户1149182
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(33)-MVC 表单验证

    注:本节阅读需要有MVC 自定义验证的基础,否则比较吃力 一直以来表单的验证都是不可或缺的,微软的东西还是做得比较人性化的,从webform到MVC,都做到了双...

    用户1149182
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录

    我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先完成了,要不权限是讲不下去了 把我们之前的表更新到EF中去 ? 登录在Account控...

    用户1149182
  • 推荐一个代码自动完成的工具AutoCode

    本文转载:http://www.cnblogs.com/xiaoxiangfeizi/archive/2012/07/24/2605884.html

    跟着阿笨一起玩NET
  • RIST的下一个增强功能

    本文来自RIST Forum at IBC2019的演讲,演讲者是来自Video Flow的Adi Rozenberg。演讲主题是RIST的下一个增强功能:比特...

    用户1324186
  • QT学习第4天:qt点击鼠标画一条直线(附源代码和程序)

    cuptobjut
  • linux之系统编码,python编码,

    sys.getdefaultencoding(): 获取系统当前编码,这里的系统指的是python自己的内置系统,并非操作系统,即3中的python编码。

    py3study
  • asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

    js //定义自己的规则 var myXssOptions = function (isEditer) { retur...

    易墨
  • asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

    js //定义自己的规则 var myXssOptions = function (isEditer) { retur...

    易墨
  • Uber开源深度概率编程语言Pyro,AI实验室蛰伏一年首现身

    安妮 编译整理 量子位 出品 | 公众号 QbitAI 昨天,Uber AI实验室与斯坦福研究团队共同开源了概率编程语言Pyro。Pyro是一个深度概率建模工具...

    量子位

扫码关注云+社区

领取腾讯云代金券