YbSoftwareFactory 代碼生成插件【八】:基於JQuery EasyUI、Web Api的 ASP.NET MVC 代碼生成插件


    “YbRapidSolution for MVC”是 YbSoftwareFactory 最新的代碼生成插件,可一鍵生成基於ASP.NET MVC的解決方案源代碼。其生成的 Demo 項目地址:http://mvcdemo.yellbuy.com/。本文末尾還將提供一個 Dynamic Linq 實現源碼的下載地址,供感興趣的朋友下載。

    注:該 Demo 應用程序的源碼完全通過 YbSoftwareFactory 一鍵生成,在此基礎上二次開發將大大節約開發周期。

 核心特性:

1、界面層使用ASP.NET MVC 4.0+JQuery EasyUI,基於Razor 語法,界面美觀,操作簡便。

2、集成Web API,可通過 Web API 對外發布數據,提供GET\POST\PUT\DELETE四個方法,可供 Web、WinForm、WPF、Silverlight 等所有類型的客戶端調用和管理業務數據。

    如下是Web API發布的數據:

3、通過 Dynamic Linq 實現數據庫的模糊查詢和分頁,顯著提高大數據量下的性能,本文最后將提供 Dynamic Linq 實現源碼的下載地址。

    基本原理:

    需要在服務器端實現的基於泛型的ApiController類中暴露如下GET分頁方法

public ResponseResult<M> Get(string filter, int page, int rows, string sort, string order)
        {
            
            var table = Table;
            if(!string.IsNullOrWhiteSpace(filter))
            {
                var str=GetFilterFormat();
                if(!string.IsNullOrWhiteSpace(str))
                    table = table.Where(str,filter);
            }
            var total = table.LongCount();
            table = table.OrderBy(string.Format("{0} {1}", sort, order)).Skip((page - 1)*rows).Take(rows);
            var items = table.ToList();
            var models = InjectFrom(items);
            return new ResponseResult<M>(total, models);
        }

    本方法后面的“rows”, “sort”, “order”三個參數為JQuery EasyUI datagrid設置為服務器端分頁所需的默認參數,通過在前台頁面中設置datagrid的“pagination: true”后將會自動追加這些參數,因此該方法的參數順序必須和datagrid的調用保持一致。

    filter為追加的查詢參數,用於模糊匹配,需要在前台的JS中在查詢時動態設置其參數值:

function setQueryParams(value) {
    var queryParams = grid.datagrid('options').queryParams;
    queryParams.filter = value;
    grid.datagrid('options').queryParams = queryParams;
}

    同時后台的每個實體需要實現如下的過濾表達式,以便支持查詢后的數據庫分頁,此處使用了Dynamic Linq 技術,你可自定義符合自身需求的查詢方式:

protected override string[] FilterArray
        {
            get
            {
                return new[] { "ProductName.Contains(@0)",
                    "QuantityPerUnit.Contains(@0)", 
                    "Categories.CategoryName.Contains(@0)", 
                    "Suppliers.CompanyName.Contains(@0)" };
            }
        }

4、數據訪問層使用 EntityFramework,使用Code First,基於其提供的IQueryable接口實現查詢和分頁。

5、數據編輯界面,自動處理One-Many的關系:

6、集成方便易用的數據字典功能

    可排序的網格數據字典界面:

i嗎

    網格數據字典的管理使用通用API,你僅需定義所要管理的主代碼即可:

//此處添加需要的主代碼
        public IEnumerable<ConcreteData> Get()
        {
            var items = new List<ConcreteData>();

            items.Add(new ConcreteData() { ConcreteType = "類別"});
            items.Add(new ConcreteData() { ConcreteType = "顏色" });
            items.Add(new ConcreteData() { ConcreteType = "民族" });

            return items;
        }


    可排序的層次數據字典:

   層次數據字典的管理也使用通用API,你同樣僅需定義所要管理的主代碼即可:

public IEnumerable<HierarchyData> Get()
        {
            var items = new List<HierarchyData>();
            //此處添加需要的主代碼
            items.Add(new HierarchyData() { HierarchyType = "行政區域" });
            items.Add(new HierarchyData() { HierarchyType = "部門" });

            return items;
        }

7、集成完善的權限控制功能

    登錄用戶管理界面:

    角色管理界面:

附件一:點擊下載Dynamic Linq的源代碼


免責聲明!

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



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