前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-EasyUI缺陷修复与扩展

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

作者头像
用户1149182
发布于 2018-01-16 06:10:30
发布于 2018-01-16 06:10:30
84600
代码可运行
举报
运行总次数:0
代码可运行

不知不觉已经过了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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 "您确定要删除所选记录吗?"; } }

    }
}

  在视图中的使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#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

  并加入以下代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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());

        }
    }
}

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-11-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
电机应用开发:无刷直流电机原理和应用
直流电机具有优越的调速性能,控制性能好,调速范围宽,气动转矩大,低速性能好,运行平稳等特点。应用场合也非常广泛,直流有刷电机由于存在换向器,因而会导致不可靠源增加。国内外对无刷直流电机的研究很多,从最初的方波无刷电机发展到正弦波无刷电机,其中正弦波无刷电机也称为 永磁同步电机(PMSM)。
ZC_Robot机器人技术
2020/12/26
2.6K0
电机应用开发:无刷直流电机原理和应用
电机控制foc算法讲解_电机算法需求
最近做完了一个直流无刷电机的电机调速项目,查阅了各种大神所写的博客和论文,在这里我只做一下小小的总结:(PS最近有遇到相关课题,发现以前的描述并不完整,因此又补充了一些。) FOC(Filed Oriented Control)是采用数学方法实现三相马达的力矩与励磁的解耦控制。 主要是对电机的控制电流进行矢量分解,变成励磁电流 I d Id Id 和交轴电流 I q Iq Iq ,励磁电流主要是产生励磁,控制的是磁场的强度,而交轴电流是用来控制力矩,所以在实际使用过程中,我们常令 I d = 0 Id=0 Id=0 。之后我将详细介绍一下这个算法的数学原理和一些自己的理解。 #FOC矢量控制总体算法简述 输入:位置信息,两相采样电流值,(3相电流、电机位置或者电机速度) 输出:三相PWM波 所需硬件:两个ADC,一个光电或磁编码器,主控,依据电压等级的不同有mosfet或者IGBT或者SiC功率模块组成的三个半桥 FOC算法在本质上就是一些线性代数中的矩阵变换,我在这里讲述的是有传感器的FOC算法,转子的位置信息是通过绝对式磁编码器反馈的,直接是数字量。
全栈程序员站长
2022/09/29
3.6K0
电机控制foc算法讲解_电机算法需求
无刷电机与有刷电机的区别
无刷电机:无刷直流电机由电动机主体和驱动器组成,是一种典型的机电一体化产品。由于无刷直流电动机是以自控式运行的,所以不会像变频调速下重载启动的同步电机那样在转子上另加启动绕组,也不会在负载突变时产生振荡和失步。中小容量的无刷直流电动机的永磁体,现在多采用高磁能级的稀土钕铁硼(Nd-Fe-B)材料。因此,稀土永磁无刷电动机的体积比同容量三相异步电动机缩小了一个机座号。
不脱发的程序猿
2021/01/20
8510
什么是伺服电机,伺服电机知识汇总
“伺服”一词源于希腊语“奴隶”的意思。“伺服电机”可以理解为绝对服从控制信号指挥的电机:在控制信号发出之前,转子静止不动;当控制信号发出时,转子立即转动;当控制信号消失时,转子能即时停转。 伺服电机是
机器人网
2018/05/04
1.9K0
什么是伺服电机,伺服电机知识汇总
深入解析汽车MCU的软件架构
电动汽车(EV)正在成为首选的交通方式,为传统内燃机汽车提供了一种可持续发展的环保型替代方案。在电动汽车复杂的生态系统中,众多电子控制单元(ECU)在确保其高效运行方面发挥着至关重要的作用。电机控制单元(MCU)就是这样一个 ECU,它是电机性能背后的大脑。在这篇综合文章中,我们将探索电机控制单元的世界,研究它们的功能、组件以及影响汽车 MCU 领域的最新趋势。
芯动大师
2024/03/10
1K0
深入解析汽车MCU的软件架构
电机驱动:常见电机分类
电机是典型的将电能转化为机械能的设备,其是大多数机器人的执行部件。可以说,选择一款性能优越的电机可以使得机器人的性能得到充分的展示。因而电机在机器人中的应用极其广泛。电机的类型划分可以从不同角度给出不同的类别,但是一般工程师是根据自己的实际的需求进行划分:在速度要求高的场合会选择直流电机,精度要求高,速度要求低的场合会选用不仅电机,电机输出功率较大的场合会采用交流电机。
ZC_Robot机器人技术
2020/12/29
4K0
电机驱动:常见电机分类
电机应用开发-直流有刷电机原理与应用
电机是将电能转化为旋转运动,经过传动系统最终转化为机器人的运动。在我们见到的自动化设备、机床以及机器人等机电一体化设备中发挥着重要的作用。电机的驱动控制也是机电一体化产品的核心技术。电机根据其驱动原理可以分为直流电机、步进电机、交流电机等类型。在一般的控制应用中可以认为:步进电机的精度较高,直流电机的转速快且交流电机的负载大。
ZC_Robot机器人技术
2020/12/25
2.3K1
电机应用开发-直流有刷电机原理与应用
有刷电机、无刷电机、伺服电机、步进电机、减速电机的区别
有刷电机是内含电刷装置的将电能转换成机械能(电动机)或将机械能转换成电能(发电机)的旋转电机。有刷电机是所有电机的基础,它具有启动快、制动及时、可在大范围内平滑地调速、控制电路相对简单等特点。
小贝壳
2020/03/05
9K0
无刷直流电动机驱动控制系统_直流无刷电机驱动电路
参考文献 [1] 王爱元. 控制电机及其应用[M]. 第一版. 上海:上海交通大学出版社, 2013.
全栈程序员站长
2022/11/01
1.2K0
无刷直流电动机驱动控制系统_直流无刷电机驱动电路
详解:永磁同步电机原理、特点以及应用
电机对于工农业来说至关重要,本文将会对电机的定义、分类、电机驱动的分类进行简介,并详细介绍永磁同步电机的原理、特点以及应用。 电机的定义 所谓电机,顾名思义,就是将电能与机械能相互转换的一种电力元器件。当电能被转换成机械能时,电机表现出电动机的工作特性;当电能被转换成机械能时,电机表现出发电机的工作特性。电机主要由转子,定子绕组,转速传感器以及外壳,冷却等零部件组成。 电机的分类 按结构和工作原理划分:直流电动机、异步电动机、同步电动机。 按工作电源种类划分:可分为直流电机和交流电机
机器人网
2018/04/25
10.5K0
详解:永磁同步电机原理、特点以及应用
2_电机控制入门_淘宝买的PMSM电机与FOC
自学电机控制的难度还是不小的,一是否是相关专业,二适合初学者的资料。
用户5908113
2024/06/21
1840
2_电机控制入门_淘宝买的PMSM电机与FOC
无刷直流电机控制技术(无刷直流电机)
传统无刷直流电机安装的霍尔传感器增加了电机的体积和成本、可靠性低、抗干扰能力弱。因此提出了无刷直流电机无位置传感器控制策略,解决了传递霍尔传感器的弊端。
全栈程序员站长
2022/07/28
1K0
无刷直流电机控制技术(无刷直流电机)
SimpleFOC-力矩控制模式
FOC又称矢量控制,是通过控制变频器输出电压的幅值和频率控制三相直流无刷电机的一种变频驱动控制方法。FOC的实质是运用坐标变换将三相静止坐标系下的电机相电流转换到相对于转子磁极轴线静止的旋转坐标系上,通过控制旋转坐标系下的矢量大小和方向达到控制电机目的。由于定子上的电压量、电流量、电动势等都是交流量,并都以同步转速在空间上不断旋转,控制算法难以实现控制。通过坐标变换之后,旋转同步矢量转换成静止矢量,电压量和电流量均变为直流量。再根据转矩公式,找出转矩与旋转坐标系上的被控制量之间关系,实时计算和控制转矩所需的直流给定量,从而间接控制电机达到其性能。由于各直流量是虚构的,在物理上并没有实际意义,因而还需通过逆变换变为实际的交流给定值。
云深无际
2023/05/24
1.2K0
SimpleFOC-力矩控制模式
树莓派基础实验34:L298N模块驱动直流电机实验
  直流电机是一种将直流电能转换为机械能的电动机,因其良好的调速性能而在电力拖动中得到广泛应用,用于驱动各种设备,如电风扇、遥控小车、电动车窗等,也非常适合作为机器人的行走机构。
张国平
2020/09/27
3.5K0
机械臂模块化关节电机位置/速度传感器汇总
无刷直流电机是目前最具发展前景的机电一体化电机。其也是随着半导体电子发展而出现的,也是机器人技术发展的关键零部件。
ZC_Robot机器人技术
2020/11/06
2.2K0
机械臂模块化关节电机位置/速度传感器汇总
永磁直流无刷电机驱动器_永磁直流无刷电机的优缺点
现实生活中我们接触的电机包括很多种类,除部分特殊种类外,永磁电机均是利用定子与转子磁场相互作用的原理制成。其中,使用直流电源驱动的电机称为直流电机,直流电机又可细分为直流有刷电机和直流无刷电机(BLDC)。
全栈程序员站长
2022/11/01
8170
看完马达原理动图,你可能更快成为一名合格的攻城狮
要问想成为攻城狮的朋友们,哪门功课最难学,电机恐怕是排名靠前的几个选项之一,究其原因,很多人认为是太抽象了。所以,今天小便就搜集了一大堆各种电机原理动图,看完之后,你可能更快成为一名合格的攻城狮。 电机(俗称“马达”)是指依据电磁感应定律实现电能转换或传递的一种电磁装置。它的主要作用是产生驱动转矩,作为用电器或各种机械的动力源。 发电机的主要作用是利用电能转化为机械能。 电动机主要包括一个用以产生磁场的电磁铁绕组或分布的定子绕组和一个旋转电枢或转子和其它附件组成。在定子绕组旋转磁场的作用下,其在电
机器人网
2018/04/12
1.3K0
看完马达原理动图,你可能更快成为一名合格的攻城狮
工业机器人(三)——控制方案
控制方案 控制系统是机器人重要组成部分,其主要功能是接收来自传感器的检测信号,驱动机械臂中电动机工作,进而带动机械臂移动到预定位置。本推文通过简单的实例(微型舵机)对机器人控制的简要过程进行介绍,主要
联远智维
2022/01/20
9510
工业机器人(三)——控制方案
一文搞懂步进电机特性、原理及驱动器设计
步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。当步进驱动器接收到一个脉冲信号时,它就可以驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”。
不脱发的程序猿
2021/01/20
3.5K0
SimpleFOC0-云台驱动,源码分析
云台电机的主要好处是在低速和高扭矩运行时非常平稳。它们可以高质量的代替你的步进电机或者直流伺服电机来为你的机器人或者无刷电机应用实现实现更好的运动性能。
云深无际
2023/05/24
7110
SimpleFOC0-云台驱动,源码分析
推荐阅读
相关推荐
电机应用开发:无刷直流电机原理和应用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档