魔方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

 

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

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
相关文章
|
Java 数据库连接 数据库
使用原生JDBC动态解析并获取表格列名和数据
使用原生JDBC动态解析并获取表格列名和数据
198 0
|
存储 Android开发
解决了一个大家都有可能遇到的奇葩权限问题
解决了一个大家都有可能遇到的奇葩权限问题
解决了一个大家都有可能遇到的奇葩权限问题
|
传感器 存储 机器学习/深度学习
物联网(IoT)简介:定义、技术与应用
【5月更文挑战第30天】物联网(IoT)是将物品通过嵌入式系统、传感器及通信技术连接至互联网,实现物物、物人交互和数据共享的技术。其关键包括传感器、通信、嵌入式系统、云计算和人工智能技术。物联网应用于智能家居、智慧城市、工业自动化、农业和健康医疗等领域,通过Arduino等平台可实现简单数据传输。随着技术发展,物联网将深远影响人们生活和工作方式。
5605 3
|
9月前
|
监控 前端开发 Java
构建高效Java后端与前端交互的定时任务调度系统
通过以上步骤,我们构建了一个高效的Java后端与前端交互的定时任务调度系统。该系统使用Spring Boot作为后端框架,Quartz作为任务调度器,并通过前端界面实现用户交互。此系统可以应用于各种需要定时任务调度的业务场景,如数据同步、报告生成和系统监控等。
372 9
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
1359 15
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
|
索引
foreach、for in和for of之间区别?
foreach、for in和for of之间区别?
609 0
|
消息中间件 人工智能 Serverless
函数计算FC降价全解析,最高幅度达93%,怎么用才便宜?
今年云栖大会,函数计算3.0全新升级,相对函数计算2.0,3.0版本突出易用性、高弹性,并且可以和更多阿里云服务无缝集成。业内首发神龙 Serverless GPU 架构,冷启动大幅优化,全链路调度延时降低 80%,函数执行性能波动率降低 70%;作为事件驱动的全托管计算服务,足够轻量灵活,让用户以更少的代码,更好、更快地实现业务创新。函数计算 FC 通过大规模的资源池化和调度策略优化实现降本,阶梯定价最高降幅可达 93%。
函数计算FC降价全解析,最高幅度达93%,怎么用才便宜?
|
网络协议 文件存储
如何公网远程连接本地群晖NAS中的WebDAV
如何公网远程连接本地群晖NAS中的WebDAV
1424 0
|
Arthas 运维 监控
JVM学习.05 JVM常见的排障和调优
前面介绍了JVM相关的内存和线程相关的技术。对于JVM也算有了一个比较系统、完整的理论基础。理论总是作为指导实践的工具,但是从理论到实践,总会遇到一些虚拟机相关问题,故障。所以还需要学习一些常用的JVM排障工具,和一些常见的调优手段。
499 0
JVM学习.05 JVM常见的排障和调优