Blazor 生态里,Bootstrap 样式的 UI 组件库选择不算多,BootstrapBlazor 是其中维护最活跃的一个。v10.6.2 是一个偏修复的小版本,但涉及的两个改动——EditorForm 的分组排序和 Table 的列可见性重置——都是日常开发中高频使用的功能,值得快速过一遍。
修复了什么
EditorForm 分组排序回归
EditorForm 支持按分组渲染表单字段,分组顺序由 GroupOrder 参数控制。之前的某个版本中,分组排序逻辑被改动,导致依赖 GroupOrder 设定顺序的项目表单布局出现错乱。v10.6.2 把排序行为恢复到 GroupOrder 参数驱动的模式,分组字段再次按开发者指定的顺序排列。
这对复杂表单场景很关键——比如一个编辑页面同时包含"基本信息"、"联系方式"、"权限配置"三个分组,顺序颠倒会让用户填写流程变得别扭。
Table 列可见性重置方法恢复
Table 组件提供了 ResetVisibleColumns 方法,用于把用户手动隐藏的列一次性恢复到默认可见状态。此前该方法逻辑被修改后行为异常,调用后列状态没有正确还原。本次修复恢复了原有逻辑,一键重置再次可用。
这个功能在数据表格交互中很实用:用户在探索数据时隐藏了若干列,想回到初始视图时,不需要逐列勾选,一个方法调用即可。
实际使用示例
下面用一个最小项目演示这两个修复点涉及的功能。假设你已经有一个 Blazor Server 或 WebApp 项目。
EditorForm 分组排序
// Model: 一个带分组的用户信息类
public class UserProfile
{
// 基本信息
[Display(Name = "用户名", GroupName = "基本信息", GroupOrder = 1)]
public string UserName { get; set; }
[Display(Name = "邮箱", GroupName = "基本信息", GroupOrder = 1)]
public string Email { get; set; }
// 联系方式
[Display(Name = "手机号", GroupName = "联系方式", GroupOrder = 2)]
public string Phone { get; set; }
[Display(Name = "地址", GroupName = "联系方式", GroupOrder = 2)]
public string Address { get; set; }
// 权限配置
[Display(Name = "角色", GroupName = "权限配置", GroupOrder = 3)]
public string Role { get; set; }
[Display(Name = "是否启用", GroupName = "权限配置", GroupOrder = 3)]
public bool IsActive { get; set; } = true;
}
<!-- Razor 页面中使用 EditorForm -->
<EditorForm Model="@profile" ShowGroup="true" />
@code {
private UserProfile profile = new();
}
GroupOrder 值决定了分组在页面上从上到下的排列:1 → 基本信息,2 → 联系方式,3 → 权限配置。v10.6.2 修复后,这个顺序不再被打乱。
Table 列可见性重置
<!-- Razor 页面中使用 Table -->
<Table @ref="userTable"
Items="@users"
ShowColumnList="true">
<TableColumn @bind-Field="@context.UserName" />
<TableColumn @bind-Field="@context.Email" />
<TableColumn @bind-Field="@context.Phone" Visible="false" />
<TableColumn @bind-Field="@context.Role" />
</Table>
<Button Text="重置列可见性" OnClick="ResetColumns" />
@code {
private Table<UserProfile>? userTable;
private List<UserProfile> users = new();
private async Task ResetColumns()
{
// v10.6.2 修复后,此方法正确恢复所有列到默认可见状态
userTable?.ResetVisibleColumns();
}
}
用户通过表格右上角的列选择器隐藏了若干列后,点击"重置列可见性"按钮,ResetVisibleColumns() 会把所有列恢复到初始状态,包括代码中标记 Visible="false" 的列也会回到其声明时的默认值。
升级与注意事项
- 升级方式:NuGet 包
BootstrapBlazor更新到10.6.2即可,无 API 变更,纯行为修复,不需要改动现有代码。 - 如果你之前绕过了 bug:有些项目可能为了规避分组排序问题,手动在
OnInitialized中对字段列表做了排序。升级后建议移除这类 workaround,让GroupOrder正常生效,减少维护负担。 - 列可见性的默认值约定:
ResetVisibleColumns恢复的是组件声明时的初始状态,不是"全部可见"。如果你某个列声明了Visible="false",重置后它仍然是隐藏的——这是设计意图,不是 bug。
v10.6.2 虽然只是两个 bug fix,但都踩在实际使用痛点上。如果你的项目用了 EditorForm 分组或 Table 列选择器,建议尽快升级。