魔方NewLife.Cube升级v2.0

简介: 魔方是一套集成权限管理的MVC管理后台,最具特色功能是模版覆盖机制,是XCode实体类的最佳搭档! v2.0.2017.1126   借助Ajax支持高级操作,如:删除选中、批量启用禁用等 用户管理增加批量启用、批量禁用,看看效果: 选中要操作的行,上方工具栏的批量操作区域按钮会从灰变亮,(取消所有选中时该区域会变灰)。

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

 

我的博客即将同步至腾讯云+社区,邀请大家一同入驻。

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
|
2月前
|
数据可视化 搜索推荐
重磅更新-UniApp自定义字体可视化设计
重磅更新-UniApp自定义字体可视化设计
47 0
|
3月前
|
图形学 开发者 搜索推荐
Unity Asset Store资源大解密:自制与现成素材的优劣对比分析,教你如何巧用海量资产加速游戏开发进度
【8月更文挑战第31天】游戏开发充满挑战,尤其对独立开发者或小团队而言。Unity Asset Store 提供了丰富的资源库,涵盖美术、模板、音频和脚本等,能显著加快开发进度。自制资源虽具个性化,但耗时长且需专业技能;而 Asset Store 的资源经官方审核,质量可靠,可大幅缩短开发周期,使开发者更专注于核心玩法。然而,使用第三方资源需注意版权问题,且可能需调整以适应特定需求。总体而言,合理利用 Asset Store 能显著提升开发效率和项目质量。
74 0
|
6月前
|
存储 缓存 数据可视化
如何在 G6VP 可视化平台使用 GraphScope 引擎
如何在 G6VP 可视化平台使用 GraphScope 引擎
224 0
如何在 G6VP 可视化平台使用 GraphScope 引擎
|
定位技术 API 图形学
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
211 1
|
消息中间件 SQL 运维
【大数据开发运维解决方案】hadoop+kylin安装及官方cube/steam cube案例文档
对于hadoop+kylin的安装过程在上一篇文章已经详细的写了, 请读者先看完上一篇文章再看本本篇文章,本文主要大致介绍kylin官官方提供的常规批量cube创建和kafka+kylin流式构建cube(steam cube)的操作过程,具体详细过程请看官方文档。
【大数据开发运维解决方案】hadoop+kylin安装及官方cube/steam cube案例文档
|
Web App开发 小程序 算法
大屏小程序探索实践 | Cube 技术解读
大屏小程序探索实践 | Cube 技术解读
234 0
|
定位技术
GIS开发:osm数据在线下载
GIS开发:osm数据在线下载
472 0
|
前端开发 JavaScript API
这个17k star的拖拽库有点料
这个17k star的拖拽库有点料
这个17k star的拖拽库有点料
|
新零售 存储 前端开发
一「表」走天下,Flutter瀑布流及通用列表解决方案
目前闲鱼业务中无论是首页还是搜索页都有大量可以落地瀑布流的场景,而在Flutter原生中只提供了ListView, GridView,无法提供自定义布局的能力。 而在社区中,一般瀑布流的解决方案都是基于SliverMultiBoxAdaptor对其performLayout进行定制,主要存在的问题是缺乏复用机制,并且在很多情形下容易出现重复布局,在线上业务的复杂场景下容易出现帧数偏低的问题, 闪屏的问题。同时对于Child生命周期,打点曝光等一系列基础功能的支持还是一片空白的状态。 所以,我们迫切需要一个更为通用的可以解决复杂布局过程同时能够对基础能力进行扩充的列表视图解决方案。
1536 0
一「表」走天下,Flutter瀑布流及通用列表解决方案
|
开发框架 人工智能 数据可视化
蚂蚁金服开源地理可视化引擎L7 2.0正式版发布 - 让地图动起来
![L7 地理空间数据可视化](https://gw.alipayobjects.com/mdn/rms_855bab/afts/img/A*DACBQYunl7IAAAAAAAAAAABkARQnAQ) > L7 是由蚂蚁金服 AntV 数据可视化团队推出的基于 WebGL 的开源大规模地理空间数据可视分析开发框架。L7 专注于空间数据的可视化表达。图形符号学为理论基础,将抽象复杂的空间数
2616 0