BootstrapBlazor 智能生成神器(一)AutoGenerateColumnAttribute 特性介绍
阅读原文时间:2022年04月01日阅读:1

原文连接: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>?

获得/设置 列格式化回调委托

 

HeaderTemplate

RenderFragment?

获得/设置 表头模板

 

ComponentType

Type?

获得/设置 组件类型

默认为 null

Template

RenderFragment?

获得/设置 显示模板

 

Step

object?

获得/设置 步长

默认为 1

Rows

int

获得/设置 Textarea 行数

 

PropertyType

Type?

获得 属性类型

 

Text

string?

获得/设置 当前属性显示文字 列头或者标签名称

  下面我们来看看它在 ValidateForm 组件 与 EditorForm 组件中的表现

实体类 Foo.cs

1 public class Foo
2 {
3 ///

4 /// 5 ///
6 [Key]
7 [Display(Name = "主键")]
8 [AutoGenerateColumn(Ignore = true)]
9 public int Id { get; set; }
10
11 /// 12 /// 13 ///
14 [Required(ErrorMessage = "{0}不能为空")]
15 [AutoGenerateColumn(Order = 10, Filterable = true, Searchable = true)]
16 [Display(Name = "姓名")]
17 public string? Name { get; set; }
18
19 /// 20 /// 21 ///
22 [AutoGenerateColumn(Order = 1, FormatString = "yyyy-MM-dd", Width = 180)]
23 [Display(Name = "日期")]
24 public DateTime? DateTime { get; set; }
25
26 /// 27 /// 28 ///
29 [Display(Name = "地址")]
30 [Required(ErrorMessage = "{0}不能为空")]
31 [AutoGenerateColumn(Order = 20, Filterable = true, Searchable = true)]
32 public string? Address { get; set; }
33
34 /// 35 /// 36 ///
37 [Display(Name = "数量")]
38 [Required]
39 [AutoGenerateColumn(Order = 40, Sortable = true)]
40 public int Count { get; set; }
41
42 /// 43 /// 44 ///
45 [Display(Name = "是/否")]
46 [AutoGenerateColumn(Order = 50)]
47 public bool Complete { get; set; }
48
49 /// 50 /// 51 ///
52 [Required(ErrorMessage = "请选择学历")]
53 [Display(Name = "学历")]
54 [AutoGenerateColumn(Order = 60)]
55 public EnumEducation? Education { get; set; }
56
57 /// 58 /// 59 ///
60 [Required(ErrorMessage = "请选择一种{0}")]
61 [Display(Name = "爱好")]
62 [AutoGenerateColumn(Order = 70, Editable = false)]
63 public IEnumerable Hobby { get; set; } = new List();
64 }

页面 Foo.razor

1 2 3 4 @bind-Field="@context.DateTime" Readonly="true" /> 5 @bind-Field="@context.Hobby" Items="@Hobbys" /> 6 7 8