BootstrapBlazor 智能生成神器(一)AutoGenerateColumnAttribute 特性介绍
原文连接:https://www.cnblogs.com/ysmc/p/16074645.html
BootstrapBlazor 官网地址:https://www.blazor.zone
介绍
BootstrapBlazor 中的 Table 组件、EditorForm 表单组件、ValidateForm 表单组件 等等组件,都具有根据实体类自动生成相应功能的能力,而这里起到关键作用的就是 AutoGenerateColumnAttribute,从命名可以得知,这是一个特性,让我们来看看他支持哪些功能吧,还有很多没列出来,实在是太多了,感兴趣的可以下载源码看看 传送门。
属性 | 类型 | 作用 | 说明 |
Order | int | 获得/设置 显示顺序 |
规则如下: >0时排前面,1,2,3... =0时排中间(默认) <0时排后面,...-3,-2,-1 |
Ignore | bool | 获得/设置 是否忽略 | 默认为 false 不忽略 |
DefaultSort | bool | 获得/设置 是否为默认排序列 | 默认为 false |
SkipValidate | bool | 获得/设置 是否不进行验证 | 默认为 false |
IsReadonlyWhenAdd | bool | 获得/设置 新建时此列只读 | 默认为 false |
IsReadonlyWhenEdit | bool | 获得/设置 编辑时此列只读 | 默认为 false |
DefaultSortOrder | SortOrder | 获得/设置 是否为默认排序规则 | 默认为 SortOrder.Unset |
Width | int | 获得/设置 列宽 | |
Fixed | bool | 获得/设置 是否固定本列 | 默认 false 不固定 |
Visible | bool | 获得/设置 列是否显示 | 默认为 true 可见的 |
CssClass | string? | 获得/设置 列 td 自定义样式 | 默认为 null 未设置 |
ShownWithBreakPoint | BreakPoint | 获得/设置 显示节点阈值 | 默认值 BreakPoint.None 未设置 |
FormatString | string? | 格式化字符串 | 如时间类型设置 yyyy-MM-dd |
PlaceHolder | string? | 获得/设置 placeholder 文本 | 默认为 null |
Formatter | Func<object?, Task<string>>? | 获得/设置 列格式化回调委托 | |
HeaderTemplate | RenderFragment<ITableColumn>? | 获得/设置 表头模板 | |
ComponentType | Type? | 获得/设置 组件类型 | 默认为 null |
Template | RenderFragment<object>? | 获得/设置 显示模板 | |
Step | object? | 获得/设置 步长 | 默认为 1 |
Rows | int | 获得/设置 Textarea 行数 | |
PropertyType | Type? | 获得 属性类型 | |
Text | string? | 获得/设置 当前属性显示文字 列头或者标签名称 |
|
实战
下面我们来看看它在 ValidateForm 组件 与 EditorForm 组件中的表现
实体类 Foo.cs
1 public class Foo 2 { 3 /// <summary> 4 /// 5 /// </summary> 6 [Key] 7 [Display(Name = "主键")] 8 [AutoGenerateColumn(Ignore = true)] 9 public int Id { get; set; } 10 11 /// <summary> 12 /// 13 /// </summary> 14 [Required(ErrorMessage = "{0}不能为空")] 15 [AutoGenerateColumn(Order = 10, Filterable = true, Searchable = true)] 16 [Display(Name = "姓名")] 17 public string? Name { get; set; } 18 19 /// <summary> 20 /// 21 /// </summary> 22 [AutoGenerateColumn(Order = 1, FormatString = "yyyy-MM-dd", Width = 180)] 23 [Display(Name = "日期")] 24 public DateTime? DateTime { get; set; } 25 26 /// <summary> 27 /// 28 /// </summary> 29 [Display(Name = "地址")] 30 [Required(ErrorMessage = "{0}不能为空")] 31 [AutoGenerateColumn(Order = 20, Filterable = true, Searchable = true)] 32 public string? Address { get; set; } 33 34 /// <summary> 35 /// 36 /// </summary> 37 [Display(Name = "数量")] 38 [Required] 39 [AutoGenerateColumn(Order = 40, Sortable = true)] 40 public int Count { get; set; } 41 42 /// <summary> 43 /// 44 /// </summary> 45 [Display(Name = "是/否")] 46 [AutoGenerateColumn(Order = 50)] 47 public bool Complete { get; set; } 48 49 /// <summary> 50 /// 51 /// </summary> 52 [Required(ErrorMessage = "请选择学历")] 53 [Display(Name = "学历")] 54 [AutoGenerateColumn(Order = 60)] 55 public EnumEducation? Education { get; set; } 56 57 /// <summary> 58 /// 59 /// </summary> 60 [Required(ErrorMessage = "请选择一种{0}")] 61 [Display(Name = "爱好")] 62 [AutoGenerateColumn(Order = 70, Editable = false)] 63 public IEnumerable<string> Hobby { get; set; } = new List<string>(); 64 }
页面 Foo.razor
1 <ValidateForm Model="@ValidateModel"> 2 <EditorForm TModel="Foo"> 3 <FieldItems> 4 <EditorItem @bind-Field="@context.DateTime" Readonly="true" /> 5 <EditorItem @bind-Field="@context.Hobby" Items="@Hobbys" /> 6 </FieldItems> 7 <Buttons> 8 <Button ButtonType="ButtonType.Submit" Icon="fa fa-save" Text='提交' /> 9 </Buttons> 10 </EditorForm> 11 </ValidateForm>
呈现效果
同时支持根据实体类属性的特性进行表单验证,非常的好用
本文来自博客园,作者:一事冇诚,转载请注明原文链接:https://www.cnblogs.com/ysmc/p/16074645.html