魔方NewLife.Cube升級v2.0


 魔方是一套集成權限管理的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

 

我的博客即將同步至騰訊雲+社區,邀請大家一同入駐。


免責聲明!

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



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