魔方是一套集成權限管理的MVC管理后台,最具特色功能是模版覆蓋機制,是XCode實體類的最佳搭檔!
v2.0.2017.1126 借助Ajax支持高級操作,如:刪除選中、批量啟用禁用等
用戶管理增加批量啟用、批量禁用,看看效果:
選中要操作的行,上方工具欄的批量操作區域按鈕會從灰變亮,(取消所有選中時該區域會變灰)。點擊“批量啟用”,后台發起Ajax請求到EnableSelect動作,處理完成后顯示提示文本,然后刷新頁面。
根據魔方的模版覆蓋機制,在User視圖下增加名為 _List_Toolbar_Batch.cshtml 的視圖
表示在顯示User的列表頁時,使用該視圖覆蓋全局默認視圖,(_List_Toolbar_Batch.cshtml的全局默認視圖其實為空)。
該批量操作視圖位於工具欄第二位,左邊是添加按鈕,右邊是查詢條件。
視圖內容如下:
@using NewLife.Common; @{ var user = ViewBag.User as IUser ?? User.Identity as IUser; var fact = ViewBag.Factory as IEntityOperate; var enableSelect = this.EnableSelect(); } @if (enableSelect) { <button type="button" class="btn btn-purple btn-sm" data-action="enable" data-url="@Url.Action("EnableSelect")" data-fields="keys" disabled> 批量啟用 </button> <button type="button" class="btn btn-purple btn-sm" data-action="enable" data-url="@Url.Action("DisableSelect")" data-fields="keys" disabled> 批量禁用 </button> }
魔方會攔截所有帶有data-action的按鈕和超鏈接,改為ajax向后端發起請求。
data-fields 表示發起請求時需要攜帶的參數所在控件的名字,keys就是每一行開頭checkbox的控件名。
服務端代碼如下:
/// <summary>批量啟用</summary> /// <param name="keys"></param> /// <returns></returns> [EntityAuthorize(PermissionFlags.Update)] public ActionResult EnableSelect(String keys) { var count = 0; var ids = Request["keys"].SplitAsInt(); if (ids.Length > 0) { //var list = UserX.FindAll(UserX._.ID.In(ids)); Parallel.ForEach(ids, id => { var user = UserX.FindByID(id); if (user != null && !user.Enable) { user.Enable = true; user.Save(); Interlocked.Increment(ref count); } }); } return JsonRefresh("共啟用[{0}]個用戶".F(count)); }
MVC處理keys時只取第一個,不得不改用Request["keys"]。
keys里面就是選中項的主鍵,這里用Parallel並行計算來進行批量更新。
來看看后端響應:
魔方統一了Ajax響應格式,result表示成功失敗,data是提示文本,特殊場合還可以響應結構化數據,url表示顯示文本后要跳轉的url,[refresh]特指刷新當前頁。
借助魔方v2.0的Ajax機制,普通C#工程師可以無需編寫js腳本即可完成各種高級操作!
源碼地址:http://git.NewLifeX.com/NewLife/X
海外地址:https://github.com/NewLifeX/X
我的博客即將同步至騰訊雲+社區,邀請大家一同入駐。