構建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彈出窗體,是不是沒有居中,好丑啊;

  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

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 "您確定要刪除所選記錄嗎?"; } }

    }
}
View Code

  在視圖中的使用

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

        }
    }
}
View Code

  並在視圖中使用它,使用例子!

@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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM