YbSoftwareFactory 代碼產生外掛程式二次開發【八】:基於JQuery EasyUI、Web Api的 ASP.NET MVC 代碼產生外掛程式

來源:互聯網
上載者:User

    “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的原始碼

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.