更新日志
v2.x
v2.0.11
- 修改 解耦 AutoMapper (Breaking Change)
- 框架不再捆绑 AutoMapper,增加了 IObjectMapper 接口,开发者可自选对象映射库(比如 Mapster)或者自行实现
- QuickAdmin.Net.Templates 模板里已加入 选取对象映射库 的选项,新建项目、解决方案时可为你自动生成使用 AutoMapper 或 Mapster 的实现代码
- 旧版项目升级到此版时需要手工添加一下对象映射配置,否则运行时会提示:"Fatal error: service IObjectMapper missing"
以使用 AutoMapper 为例,更新 QuickAdmin.Net 包(参见)到此版本后:- 给 Web 项目添加 AutoMapper 包(注:其最后一个 MIT 版本是 14)
- 在 Web 项目 Code 目录下创建
IObjectMapper实现类AutoMapperObjectMapper以及映射配置类AutoMapperProfile
具体代码可直接从用新模板创建的项目里复制(更新 QuickAdmin.Net.Templates 包,创建一个项目,创建时对象映射库选 "AutoMapper") - 在 Program.cs 启动代码里加入:
builder.Services.AddAutoMapper(typeof(Code.AutoMapperProfile)); builder.Services.AddSingleton<IObjectMapper, Code.AutoMapperObjectMapper>();
v2.0.10
- 修改 全局异常处理页(参见)
- 可处理 未捕获异常 以及 状态码错误(404/403等)
- 根据 AlwaysReturnHttp200OnApiException 配置,可给前端返回友好结果
- QuickAdmin.Net.Templates 内项目模板同步修改
- 修改 系统菜单/快速链接/用户菜单 编辑页面调整以更方便地操作
- 修改 SysSiteUserMenu.CssClass 可自动识别更多的标识字符串
v2.0.9
- 修改 内置 Index 页增强
- 弃用
SingleTabMode配置项,不再支持单选项卡模式 - 添加 ShowBreadcrumb 配置项并默认为
true,指示是否显示面包屑(之前在单选项卡模式下才会显示),即是否在顶部显示当前活动 Tab 页的页面路径(不在系统菜单树里的页面也可显示) - 添加 BreadcrumbAreaBoxFlex 以及 QuickLinkAreaBoxFlex 配置项,用来控制 面包屑区域 和 快速链接区域 占据顶部空间的宽度比例
- 添加 DefaultFrameStyle 配置项,用来指定默认框架样式
- 可显示页脚:通过重写 RCLService.CreateIndexPageFooterPanel() 方法,可在底部显示一个包含自定义内容的页脚面板
- QuickAdmin.Net.Templates 内解决方案模板新增相应示例
- 弃用
- 修复 生成最简配置时可能 System.NullReferenceException 异常的问题
v2.0.8
- 修改 Helper.GlobalExcludedAssembliesWhenIteratingAppAssemblies 改为 get only
- 修改 用来调整通知消息框样式的 css 移入 qadmin.css (即:将一直有效)
- 修改 调整初始化过程中输出的日志
v2.0.7
- 增加 适配 GBase 8s 数据库
- 优化 优化内置树形查询扩展方法以及服务方法
- 修改 解决方案模板默认不显示消息框的倒计时进度条
- 修复 通用列表页里聚合统计可能异常的问题
- 修复 通用编辑页里,树形表结构记录的父项显示错误的问题
v2.0.6
- 修改 QuickAdmin.Net.Templates 内 QuickAdminApp/QuickAdminSolution 模板引用包修改
- DB Provider 默认改用 FreeSql.Provider.SqliteCore
- net8/net9/net10 框架对应的 .NET 包分别升级为最新版本
- 使用了 SQLite 数据库的应用可能出现:在某个低版本 Linux 里出现数据库连接异常的情况
原因通常是新版本 SQLite nuget 包所需的 glibc 版本高于该 Linux 里的版本,可通过降级 SQLite 相关 nuget 包版本,或者改用 FreeSql.Provider.Sqlite 的办法来解决(移除 FreeSql.Provider.SqliteCore/Microsoft.Data.Sqlite.Core/SQLitePCLRaw.bundle_e_sqlite3 包,再添加 FreeSql.Provider.Sqlite 包)。
- 补充 补充缺失的 XML 文档注释
- 修复 通用 CRUD 生成最简配置时实体类型可能错误的问题
v2.0.5
- 新增 用户服务/认证服务新增锁定相关成员
- 补充 补充缺失的 XML 文档注释/补充缺失的多语言资源
- 修复 通用 CRUD Url 可能传参为 null 的问题
v2.0.3
- 新增 通用 CRUD 新增 TrimZero 配置项以及 TrimZero UIHint
- 修改 客户端 QF 对象增强
- QF.formatNumber 方法新增 noTrailingZeros 参数
- QF.renderFormattedNumber 渲染函数支持服务端设置的 TrimZero 属性
- 新增 QF.trimTrailingZeros/QF.ensureString/QF.doFineUIPostBack/QF.trimStart/
QF.trimStartOnce/QF.trimEnd/QF.trimEndOnce等方法
v2.0.2
- 新增 通用 CRUD 新增 更新比对 功能:更新实体时比对更改前后的记录并将有变更的字段值记入操作日志(默认未启用)
- 基于内置的服务实现实体服务时,重写 EnableChangeLogging 为
true去启用 - 也可将通用 CRUD 配置项
EnableChangeLogging置为true来启用
- 基于内置的服务实现实体服务时,重写 EnableChangeLogging 为
- 修改 适配 FineUICore v13.1.0
- 树控件微型模式下,FineUICore v13.1.0 已改为默认显示根节点文本,QuickAdmin.Net 内置首页里的菜单树则仍默认为不显示以保持版本一致性,仍由 IsRootNodeTextVisibleWhenInMiniMode 配置项控制
- 调整首页 css 以适配新版
- 使用旧版本 FineUICore 的项目不受影响
v2.0.1
- 优化 XML 文档注释
- 修复 下级管理员在线用户分页统计错误的问题
- 修复 重置密码无响应的问题
v2.0.0
- 修改 系统管理模型调整(部门添加 IdPath/NamePath 等修改)(不支持从 v1.x 直接升级)
- 新增 雪花 Id 支持
- 新增 新增若干扩展方法
- 新增 配置自定义功能
- 修改 命名空间调整
- 修改 全局类 G 重构,按功能拆分为不同的静态子模块:G.Http/G.Auth/G.AppServices/G.Utils/G.Crypto/G.L10n
- 修改 内置的人员选取页面加入令牌验证,以防越权访问(页面基类已提供 RegisterSelUserContextToken 方法来注册令牌)
- 升级 FreeSql to v3.5.305,并优化数据库访问
v1.x
v1.2.33
- 新增 DisableSQLDataSourceSetting 初始化选项、ToMinimalJson() 扩展方法、DeepEquals() 扩展方法
- 修改 内置页面 UI 微调
v1.2.32
- 新增 Keyed Services 支持
- 全局对象
G新增 GetKeyedAppService/GetRequiredKeyedAppService 等等 Keyed Services 相关方法 - 查找服务相关方法添加
serviceKey参数,如:FindAppServiceByBaseInterfaceOfType() - UseDI 特性新增
ServiceKey属性 - 批量注册服务的相关方法将能自动注册 Keyed Services
- 全局对象
- 新增 系统菜单新增 NodeHTML 属性,对应表结构新增
NodeHTML字段。应用启动时将检查并自动添加该字段(表内数据不受影响),若失败手动添加一下(会有错误日志输出,同时应用运行目录下会生成一个错误日志文件) - 新增 新增 TreeMiniModePopWidth、IsRootNodeTextVisibleWhenInMiniMode 配置项
- 新增 公共日志记录器 G.Logger
- 移除 移除自 1.1.x 起已标记为 Obsolete 的成员
v1.2.31
- 新增 通用 CRUD 新增无编程实现格式化显示、聚合统计、超链显示等功能
- 数值字段可通过 RendererArgument 配置进行显示格式化
- 通过 AggregateType、AggregateCellText 配置进行单行聚合统计
- 通过 Aggregates 配置进行多行聚合统计,支持分页记录统计、全部记录统计、结果格式化等等
- 通过 Hyperlink 配置可在表格单元格里显示超链接,Url 支持动态参数,并可指定打开目标
- 解决方案模板新增相应示例内容
- 新增 客户端
QF对象新增若干方法
v1.2.30
- 新增 .NET 10 支持
- 新增 DbOnlineUserManager。至此,可选用的在线用户管理服务有
MemoryOnlineUserManager、RedisOnlineUserManager和DbOnlineUserManager - 新增 页面模板 里新增了模板
- 修改 模板里新增了若干示例内容,其中 RazorPages 项目模板增加了 [Cookie 身份认证] 选项,选中后将自动生成相关代码
- 修改 IAuthService.LoginAsync() 添加
doNotCheckCaptcha参数,以方便在实现自定义登录接口时忽略验证码
v1.2.29
- 新增 适应分布式部署
- 新增 AppDeployName 配置项,替代原 CookieNamePostfix 配置项,以便于配置复用。现在
CookieNamePostfix成为一个只读属性并取自AppDeployName - 其它新增:ServerNodeName配置项、RedisConnectionString配置项、分布式缓存支持、在线用户显示服务器节点等等
- 登录日志、操作日志、异常日志等实体新增了
ServerNode属性,相应的各表结构新增ServerNode字段,应用启动时将自动更新旧版表结构(表内数据不受影响),若更新失败手动添加一下(会有错误日志输出,同时应用运行目录下会生成一个错误日志文件) - RazorPages 解决方案模板增加 [使用 Redis] 选项,选中后将自动生成相关代码(Redis 初始化、基于 Redis 的在线用户管理器
RedisOnlineUserManager等等)
- 新增 AppDeployName 配置项,替代原 CookieNamePostfix 配置项,以便于配置复用。现在
- 新增
IRCLService新增 GetPageTitle() 方法,用来自定义页面标题获取逻辑 - 新增 新增若干 FineUICore 扩展方法(ExtMakeDeptTreeDropDownListByDeptId、ExtMakeSelectUserDropDownListOfDeptCtrl 等等,解决方案模板里已添加相关示例)
- 新增 客户端
QF对象新增若干成员(appendItemsToDDLWithObjects、resetDDLAndForceSetValue、triggerSelectUser 等等) - 修改 内置的各个基础页面内部的
RebindGridDataAsync/RebindGridData新增了参数(Breaking Change) - 修改 完善人员选取页面:高亮已选用户、多选标签模式等等
- 修改 完善在线用户功能:加入搜索条件等
- 修复 使用了 FineUICore v13+ 时系统基础数据导出失败的问题
- 修复 页面权限重写为空时的异常问题
v1.2.28
- 修改 在角色组管理页面也可增删成员
- 修改
CRUDProxy里的 OpenNewPageInFloatingPanel 若未设置,将取 OpenBuiltInPageInFloatingPanel 配置项
即若未给通用 CRUD 配置OpenNewPageInFloatingPanel且OpenBuiltInPageInFloatingPanel项为true,通用编辑页面也将在浮动面板内打开
v1.2.27
- 新增 新增角色组功能,并支持启用、停用
- 新增 浮动面板可自动关闭(新增
autoCloseDelay参数) - 新增 新增扩展方法 ExtTreeGridContextMenu,给树表格添加 全部展开/全部折叠 右键菜单
- 修改 简化数据权限授权设置:只在角色里指定数据权限范围
- 修改 应用 FineUICore v13 社区版提供的新特性(树表格、下拉多标签等)
- 组织机构、系统菜单、用户菜单列表页采用树表格,并加入右键菜单(全部展开/全部折叠)。双击名称将展开/折叠节点,双击其它位置则仍然打开编辑页面
- 通用 CRUD 编辑页面表单里的多选下拉列表将采用多标签模式
- FineUICore v12 下保持原模式不变
- 修改 修改扩展方法 ExtTreeContextMenu,现在只需使用该一个方法即可给树控件添加 全部展开/全部折叠 右键菜单
v1.2.26
- 新增 浮动面板功能
- 客户端
QF对象新增相关方法(参见) - 页面基类
QAdminBasePageModel、QAdminBaseMVCViewController新增相关方法(参见) - 新增 OpenBuiltInPageInFloatingPanel 配置项
- CRUD 代理新增 OpenNewPageInFloatingPanel 属性
- 解决方案模板新增浮动面板功能示例
- 客户端
v1.2.25
- 新增
RightsRequired新增 RequireAllRights 属性,以便在设置授权时,指示是需要具有所有设置的权限(即 AND 逻辑),还是只需具有其中的任一权限(即 OR 逻辑) - 新增 ApplyRecursiveDeptFilterAsync/ApplyRecursiveDeptFilter 扩展方法,快速构造部门递归查询条件
- 新增 ISimpleCache 新增同步版本方法
- 修复
SimpleCache方法里不传入缓存超时时间时发生异常的问题 - 修复 一些同步调用里的缓存在数据更新后未能刷新的问题
v1.2.23
- 修改 添加了 Cookie 身份认证后,确保 Session 过期时 Cookie 身份认证同步失效(新增 SessionAuthorizeAttribute 等等自定义授权类型)
- 修改 解决方案模板示例内容调整
v1.2.22
- 新增 EnableTreeSingleExpand 配置项
- 修改 客户端
QF对象新增若干成员 - 修改 解决方案模板新增示例内容
v1.2.20
- 新增 EnableOnlineUserManager 初始化选项
- 新增 AlwaysReturnHttp200OnApiException 配置项
- 修改 解决方案模板示例内容调整
- 修改 内置 Error 页面将自动检测是普通页面异常,还是 API 或 FineUICore post back 里的异常,并进行对应处理
- 修改 内置主题添加更多可控的 css class
v1.2.17
- 新增 初始化选项新增扩展程序集验证方法 ValidateExtensionAssembly
- 新增 FineUICoreDesigner VSIX 扩展(参见)
- 新增 若干扩展方法
- 修改 通用 CRUD 自动识别主子表,并在删除主表记录前检查是否有对应子表记录(由 CheckChildRecordsBeforeDeleting 配置控制)
- 修改 扩展默认不自动加载,改由 LoadExtensions 初始化选项决定
v1.2.11
- 新增
IServiceResult新增 ToJsonContentResult()/ToCamelCaseJsonContentResult() - 新增
RCLService新增 ConfigLayoutPageManager(),以便实现:通过重写进行全局页面配置 - 新增 动态模型绑定 功能
- 修改 解决方案模板示例内容调整
v1.2.10
- 新增 ResolveFineUICoreFormPostBackFields()
- 修改 解决方案模板示例内容调整
- 修改 主题可定制列表操作列图标
- 修改 日期属性的 MinValue/MaxValue 编辑时参照现有值
v1.2.9
- 新增 IsNoDefaultIconOnInternalButtons()/GetEditPageFormColumnsCount()
- 修改 解决方案模板示例内容调整
- 修复 在 QuickAdmin Settings 页保存配置后用户编辑页面无法打开的问题
v1.2.8
- 新增
QuickAdminLocalizationOptions新增 AppSharedJavaScriptResourceType - 修改 默认主题可设置为自定义主题
- 修改 解决方案模板加入 Cookie 身份认证更多设置代码
- 修复 若 Theme 设置错误会造成其它设置同时失效的问题
- 修复 某些实体属性特性设置未生效的问题
v1.2.6
v1.2.5
- 新增 本地化(多语言)支持,并内置 English/简体中文(zh-Hans)/繁体中文(zh-Hant) 资源
- 初始化选项新增 EnableLocalization/ConfigLocalization()
- 相关基础类型(如 QAdminBasePageModel/QAdminBaseMVCViewController 等等)新增获取多语言字符串的方法(L()/LHtml()/LHtmlStr() 等等),方便开发者直接调用
- 系统菜单/快速链接/用户菜单新增本地化属性,即各菜单项目也可按照当前请求的 Culture 显示为对应的语言
- 解决方案模板增加 [启用本地化(多语言支持)] 选项,选中后将自动加入本地化所需代码以及示例多语言资源
- 新增 若干扩展方法
v1.2.4
- 新增 解决方案模板增加 [添加 ASP.NET Core Cookie 身份认证] 选项,选中后将自动加入 Cookie 身份认证所需代码,并自动生成重写后的 AuthService
- 新增 新增 MVC 项目、解决方案模板
- 新增 新增若干扩展方法 ToFineUICoreTreeNodes()/ExtLoadDataByTreeEntity()/ExtMakeSimulateTreeByTreeEntity()/ExtLoadDataByDataSourceSetting() 等等
- 新增 新增字典表功能,包括相关实体、服务、页面以及 UI 辅助扩展方法(ExtLoadSysDictItemsByValue()/ExtLoadSysDictItemsByNameAndValue()/ExtLoadSysDictItemsByValueAndId())等
- 修改 获取微信 access_token 由 getAccessToken 改为用 getStableAccessToken 接口(WeChatMiniProgService.CreateAccessTokenAsync())
- 修改 SimpleCache 设置缓存时将忽略空值
- 修改 启用新的页面/控制器筛选器
- 修改 对 FineUICore 的扩展方法的泛型参数已调整
v1.2.3.1
- 新增 通用列表页面支持树形结构实体的节点级联删除功能
- 完善 完善对 FineUICore 内置主题的支持,并能够让用户去定制
- 修改 长时间无任何操作导致会话结束时,将提示用户去重新登录而不是提示网络失败
- 修改 修改自动登录逻辑,确保用户提交操作不会被中断
- 修复 个人资料编辑页面无法打开的问题
- 修复 非 HTTPS 下节点复制功能失败的问题
- 修复 部署到银河麒麟 V10 下,验证码图片生成问题(噪线绘制成功,但验证码字符没有绘制出来)
v1.2.1
- 新增 通用列表支持自动生成类别树,相关页面、服务、配置新增若干成员,如:ShowCategoryTreePanel/CategoryTreePanelSplitterDraggable/CategoryTreePanelWidth 等
- 新增 树形结构实体支持以模拟树形表格展示
- 新增 ShowRecursiveFilter/RecursiveFilterTitle 配置,可在树形查询时,在通用列表页显示一个检查框以决定是否递归查询
v1.2.0
- 修改 服务/页面全面异步化
- 修改 RCL 页面适配 FineUICore v12+
- 修改 基于内置通用服务的编辑页面/列表页面的基类已移到 QuickAdmin.RCL.BasePageModels 命名空间下,可在使用它们的项目里添加一下全局引用:
<ItemGroup>
<Using Include="QuickAdmin.RCL.BasePageModels" />
</ItemGroup>
- 新增 EntityTypeDataRights全局配置
- 新增 通用 CRUD 页面对更多特性的支持(参见)
- 新增 InnerFuncColumnInCRUDListLockedToRight全局配置
- 新增 通用列表页面支持锁定列(LockedPosition)
v1.1.6
- 新增 通用编辑及列表页面对更多特性的支持(参见)
- 新增 页面基类新增 ConfirmClosing 等,用来响应关闭操作
- 新增 新增 DisableClickEventOnFineUILabelsForInputControl 配置项
- 新增 FineUICore 相关扩展方法
- 新增 提供 Razor 页面模板,包含若干种布局,可用来快速开始开发页面(参见)
- 修改 序列化生成各 json 配置文件时,枚举类型改为序列化成名称字符串以方便阅读(数值仍然支持)
- 修改 通用 CRUD 对实体 string 类型属性是否默认使用多行文本有调整,参见 Multiline 设置文档
v1.1.5
- 修改 通用 CRUD 查询功能对用户输入的以比较运算符打头的过滤条件值的支持(参见:AllowFilterValueStartsWithOperator/ParseFilterItemValue())。
- 修改 内置 Index 页(快速链接徽标,系统菜单/快速链接/用户菜单点击事件自主定义等)
- 新增 TypeExtensions/MoreExtensions 新增若干扩展方法
- 优化 系统基础数据导出导入逻辑
v1.1.3
- 修改 IBackgroundTask/BackgroundTask 修改/新增若干成员,增强后台任务功能
- 完善 后台任务管理页面,可进行任务的启动/暂停/继续/停止等操作
- 新增 StringExtensions/DateTimeExtensions 新增若干扩展方法
v1.1.2
- 修改 用户菜单项 SysSiteUserMenu 改为树形结构,可创建多级菜单,并支持 CheckBox 菜单项
- 完善 完善内置 Index 页布局,支持更多的定制功能(框架风格,快速链接样式、间隔,水墨条位置等等)
- 完善 通用 CRUD 输入控件功能(设置前后缀、清除内容图标、下拉列表多选复选框等等)
- 新增 为树形结构实体新增 RemoveMatchedEntitiesAndEmptyParents() 扩展方法,用来进行递归移除操作
- 修复 树形结构实体 Iterate 扩展方法首个子节点被跳过的问题
v1.1.0
- 修改 框架支持改为 .NET 8.0+,不再支持 8.0 以下版本
- 新增 IBackgroundTask 接口 与 BackgroundTask 抽象基类,可快速实现后台任务
- 新增 RCL 同步新增管理后台任务的页面,用来查阅任务信息、启动/停止任务等
- 新增 客户端 QF 对象新增自动更新自定义渲染单元格的功能(比如单元格要显示几个超链,超链是否可用则由某个字段值决定,那么在编辑数据后就需要更新超链状态)
- 新增 若干扩展方法
- 新增 通用 CRUD EntityProperty 配置类新增 SortField 属性,以便为非表字段属性指定排序字段
- 完善 通用 CRUD 编辑页配置,可利用 FormColumnsCount/FormColumnWidths/ColSpan/FollowingBlankColsCount 等配置来生成不同排列样式的表单
v1.0.131
- 新增 以部门树形式维护组织机构的页面
- 新增 含有树控件的页面添加右键菜单,快速展开/折叠节点
- 新增 通用 CRUD 列表可显示一个用来选取分页大小的下拉框
- 新增 树形结构实体通用 CRUD 服务 TreeEntityCRUDService 新增 DeleteNode/CascadeDeleteNode 方法
- 新增 客户端 QF 对象新增 toggleSelfResultMsg/toggleParentResultMsg/toggleTopResultMsg 方法,可更方便地处理服务端返回的 IServiceResult
- 修改 显示顺序自动步进改为 10,以方便手工修改 DisplayOrder 属性调整显示顺序
- 修改 各内置页面里调整显示顺序操作移到数据列表的一个单独列里,以使操作更加方便
- 完善 各内置录入表单以及通用 CRUD 编辑记录表单回车键自动切换焦点
- 修复 主键为自增值 int 的实体在通用 CRUD 里添加记录后列表没有更新的问题
v1.0.130
- 新增 扩展模块支持
- 新增 手机号短信接口(ISmsService)/Email 服务接口(IEmailService)以及各自抽象基类
- 新增 手机号+验证码登录支持
- 新增 通用 CRUD 列表支持行扩展列(列将被置于行首,单元格内将显示一个加号 "+")
- 新增 树形结构实体通用服务 ITreeEntityService 新增 GetDirectChildren/GetDirectChildrenIds/GetSelfAndChildrenRecursive/GetSelfAndChildrenIdsRecursive 方法
- 新增 G.Utils.PrintExecutingSqlToConsole 方法
- 新增 QuickAdmin.Utils.ColoredConsole 类,用来向控制台输出彩色文本
- 修改 内置登录页支持定制登录方式,账号密码登录/手机号登录/扫码登录三种方式任意组合
