ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

NewLife.Cube EntityController完全指南:静态构造器配置字段、按钮、统计与导出的7大技巧

NewLife.Cube EntityController完全指南:静态构造器配置字段、按钮、统计与导出的7大技巧 NewLife.Cube EntityController完全指南静态构造器配置字段、按钮、统计与导出的7大技巧【免费下载链接】NewLife.CubeWeb快速开发平台搭建管理后台灵活可扩展内部集成了用户权限管理、模板继承、SSO登录、OAuth服务端、数据导出与分享等多个功能模块在真实项目中经历过单表100亿数据添删改查的考验。项目地址: https://gitcode.com/gh_mirrors/ne/NewLife.CubeNewLife.Cube 是一款开源 .NET Web 快速开发平台用于搭建灵活可扩展的管理后台。它的核心组件EntityController实体控制器让你只需继承一个基类、在静态构造器里配置字段、按钮、统计与导出就能自动获得列表、详情、增删改查、搜索、权限校验等完整 CRUD 页面。本文面向新手用 7 个实用技巧带你玩转静态构造器配置。为什么 EntityController 是管理后台的快捷键传统方式搭建一个管理页面要手写控制器、视图、表单、分页、校验……而在 NewLife.Cube 中只需一行继承继承EntityControllerT自动获得增、删、改、查全套页面与接口继承ReadOnlyEntityControllerT只读场景日志查看、统计报表自动生成列表 详情。页面结构列表、表单、详情、搜索全部由字段集合驱动而这些集合的默认值都放在实体的字段元数据里——开发者要做的只是微调这正是静态构造器的用武之地。技巧1静态构造器一次配置字段显示、隐藏与排序静态构造器在类型加载时执行一次是魔方约定好的页面配置区。基类提供了 5 个字段集合字段集合作用页面ListFields列表页表格列AddFormFields新增表单EditFormFields编辑表单DetailFields详情页SearchFields搜索条件区最常用的三个动作移除、添加、修改属性。魔方官方自己的审计日志控制器就用了这套写法源码位于 LogController.csstatic LogController() { // 列表追加列、移除列 ListFields.AddDataField(Remark, null, Action); ListFields.RemoveField(CreateUserID); // 拿到某个字段自定义显示逻辑 var df ListFields.GetField(CreateTime) as ListField; df.GetValue e (e as XLog).CreateTime.ToFullString(); }还可以用DisplayOrder调顺序、Width设列宽、ReadOnly true让编辑表单中的字段只读。官方文档 DATA-实体控制器.md 有更完整的示例。技巧2自定义工具栏按钮与行内操作按钮按钮配置同样可以写在静态构造器里配合DisplayName、MenuOrder、EntityAuthorize特性即可工具栏按钮向ListFields追加一个ButtonField设置Url、Icon、Target列表页顶部就会出现导出报表这样的按钮行内按钮追加LinkFieldUrl里用{Id}占位符即可跳转到每条记录对应的操作比如发布、审核。static ProductController() { ListFields.AddDataField(new LinkField { Name Publish, DisplayName 发布, Url /Admin/Product/Publish?id{Id}, Icon fa-paper-plane }); } 每个按钮背后的接口都会经过魔方的安全访问体系做权限校验架构详见项目中的 安全访问架构.png。技巧3在列表底部加一条统计行列表页最下方可以显示合计 / 均价等统计信息只需重写GetStatistics方法返回一个字段名→统计值的字典protected override IDictionaryString, Object GetStatistics(IEnumerableProduct list) new DictionaryString, Object { [TotalPrice] list.Sum(e e.Price), [AvgPrice] list.Average(e e.Price), };配合当前页查询条件自动计算适合订单、库存等需要一眼看总量的业务页面。技巧4一键数据导出支持 Excel、CSV、JSON、XMLEntityController 内置统一导出接口ExportFile通过format参数分发到四种格式默认导出 ExcelCSV 流导出范围自动复用当前列表页的查询条件导出你看到的就是你导出的大数据量友好数据超过 10 万行且有时间条件时自动切换为时间分片导出逐片查询、流式写出内存占用平稳导出上限由CubeSetting的MaxExport控制防止误操作拖垮服务器。想自定义列或文件名可以重写OnExportExcel、MakeExportFileName。更多细节见 DATA-数据导入导出.md。技巧5关联跳转与链接字段把列表中的某个字段变成可点击链接跳转关联数据是后台高频需求var category ListFields.GetField(CategoryId) as ListField; category.Url /Admin/Category?id{CategoryId}; category.MapField CategoryName; // 显示关联名称而非编号配合Target _blank可在新窗口打开实现订单列表 → 点客户名 → 客户详情的自然动线。技巧6用 PageSetting 开关精准控制页面功能PageSetting是一组页面级开关静态配置一次即可全局生效开关默认说明IsReadOnly-只读页面隐藏添加/编辑/删除按钮EnableToolbar✅是否显示工具栏EnableAdd✅是否显示添加按钮EnableSelect✅是否显示多选框列DoubleDelete✅假删除实体支持两次删除第一次软删除可恢复第二次才物理删除OrderByKey✅数字主键默认降序百万级以上大表自动关闭以保证查询性能例如日志类只读页面继承ReadOnlyEntityControllerT后IsReadOnly自动为 true无需任何代码。技巧7批量启用/禁用与数据导入合并批量操作只要实体带Enable字段列表多选后自动支持批量启用/禁用底层由EnableOrDisableSelect实现并逐条写入操作日志删除则复用前文提到的二次删除机制。数据导入内置 Excel / CSV / JSON / Zip 四种导入通道表头按字段名或中文显示名自动映射导入模式支持 Insert、Upsert、Merge 等——Merge 合并模式会先匹配已有数据主键/唯一索引能匹配的更新、新数据批量插入空表时退化为高速批量插入。// 导入时重写合并逻辑实现精细化已有更新、新数据插入 protected override Int32 OnMerge(IEntityFactory factory, IListIEntity list, ImportContext ctx) factory.Merge(list, null, ctx.Fields);延伸EntityController 之外魔方还内置了什么EntityController 并非孤立存在它与魔方的 SSO 单点登录、OAuth 服务端、多租户体系无缝集成——启用多租户后所有查询自动追加租户过滤条件无租户上下文时 fail-closed 拒绝访问OAuth 配置界面可参见项目中的 OAuthConfig.png。推荐资料与源码路径内容路径实体控制器源码NewLife.Cube/Common/EntityController.cs、NewLife.Cube/Common/EntityController2.cs只读控制器与导出实现NewLife.Cube/Common/ReadOnlyEntityController.cs、NewLife.Cube/Common/ReadOnlyEntityController2.cs页面开关定义NewLife.Cube/Common/PageSetting.cs官方静态构造器示例NewLife.Cube/Areas/Admin/Controllers/LogController.cs官方文档实体控制器Doc/DATA-实体控制器.md官方文档数据导入导出Doc/DATA-数据导入导出.md官方文档字段元数据Doc/DATA-字段元数据.md可运行示例工程CubeDemo/Controllers/TestController.cs掌握以上 7 大技巧你在 NewLife.Cube 中搭建任何管理后台页面基本都只需几十行静态构造器配置而不必再手写一页页 CRUD 代码。【免费下载链接】NewLife.CubeWeb快速开发平台搭建管理后台灵活可扩展内部集成了用户权限管理、模板继承、SSO登录、OAuth服务端、数据导出与分享等多个功能模块在真实项目中经历过单表100亿数据添删改查的考验。项目地址: https://gitcode.com/gh_mirrors/ne/NewLife.Cube创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表