当前位置: 首页 > news >正文

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

 

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

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
分类: X组件

本文转自大石头博客园博客,原文链接:http://www.cnblogs.com/nnhy/p/cube_v2.html如需转载请自行联系原作者

相关文章:

  • 小孩子惊吓到 解决方法 收集
  • 跟小静读CLR via C#(10)-参数
  • iOS安全系列之 HTTPS
  • 解决ssh免密码登录仍然提示输入密码问题
  • [改善Java代码]使用Throwable获得栈信息
  • VMM系列之VMM服务器主机和主机组介绍
  • JavaScript内置对象(二)
  • 私有网盘nextcloud 12的使用介绍
  • win10使用Composer-Setup安装Composer以及使用Composer安装Yii2最新版
  • 面试
  • 深入浅出——float
  • 为Docker配置阿里加速器,系统为Debian8
  • 利用Scikit-Learn和Spark预测Airbnb的listing价格
  • H264中的SPS、PPS提取与作用转
  • 4G VoLTE存在漏洞可导致手机用户地理位置和其它个人信息泄露
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 0x05 Python数据分析,Anaconda八斩刀
  • Angular2开发踩坑系列-生产环境编译
  • FastReport在线报表设计器工作原理
  • HomeBrew常规使用教程
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • 关于springcloud Gateway中的限流
  • 观察者模式实现非直接耦合
  • 项目实战-Api的解决方案
  • ionic入门之数据绑定显示-1
  • 阿里云API、SDK和CLI应用实践方案
  • ​Linux·i2c驱动架构​
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (39)STM32——FLASH闪存
  • (4)Elastix图像配准:3D图像
  • (6)STL算法之转换
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (四)Android布局类型(线性布局LinearLayout)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (万字长文)Spring的核心知识尽揽其中
  • (译)2019年前端性能优化清单 — 下篇
  • .net core Swagger 过滤部分Api
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .NetCore项目nginx发布
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET建议使用的大小写命名原则
  • [20190401]关于semtimedop函数调用.txt
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Android View] 可绘制形状 (Shape Xml)
  • [bzoj1901]: Zju2112 Dynamic Rankings
  • [bzoj2957]楼房重建
  • [C++提高编程](三):STL初识
  • [EFI]Lenovo ThinkPad X280电脑 Hackintosh 黑苹果引导文件