成都公司核名的网站杭州互联网公司排名
文章目录
- 前言
 - BB数据注解
 - 数据注解源码
 - 数据注解简介
 - 注解简单实例
 - [BB 编辑弹窗](https://www.blazor.zone/edit-dialog)
 - [ValidateForm 表单组件](https://www.blazor.zone/validate-form)
 - 使用简介
 
前言
BootstrapBlazor(一下简称BB)是个特别好用的组件,基本上满足了大部分功能。业务逻辑上面没任何问题,官方的文档也特别详细。(你看过那种只给案例的文档你就明白什么是好文档了)
BB 官方文档
BB数据注解
BB其实是面向后端管理开发的组件,特别适合用于企业级开发。可以说是小项目的特化版组件。
推荐开发技术
- Blazor Server (SSR):服务端渲染,前后端不分离开发。
 - BoostrapBlazor:UI组件库
 - SqlSugar:数据库
 
开发速度那叫一个快。不用考虑跨域,不怕安全信息泄漏(因为是SSR,浏览器只能拿到渲染结果),前端直接从后端拿数据。
唯一的问题是不支持高并发。1200人以下是安全的,如果是1200人以上的高并发,那就得上微服务了。这个是互联网开发(微服务,分布式,内存缓存)。大部分业务做不到这个水平。所以特别适合小项目
数据注解源码
BootstrapBlazor/ src / BootstrapBlazor.Shared / Data / Foo.cs
数据注解简介
- Display 
- Name:名称
 
 - AutoGenerateColumn 
- Ignore 是否忽略
 - order 排序
 - FormatString:格式化
 
 - Required 
- ErrorMessage:检验错误报错提示
 
 
注解简单实例
BB很多数据相关的都和这个注解相关。主要看有没有Model这个数据变量。


BB 编辑弹窗
ValidateForm 表单组件
使用简介
对sqlsugar生成对象添加BB注解
public partial class T_Joint
{/// <summary>/// Desc:/// Default:/// Nullable:False/// </summary>           [SugarColumn(IsPrimaryKey = true, IsIdentity = true)][AutoGenerateColumn(Ignore =true)]public long Id { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>   [Display(Name = "创建时间")]public DateTime? CreateTime { get; set; } = DateTime.Now;/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [Display(Name = "修改时间")]public DateTime? Time { get; set; }= DateTime.Now;/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [AutoGenerateColumn(Ignore = true)]public bool IsDel { get; set; } = false;/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [AutoGenerateColumn(Ignore = true)]public bool IsClick { get; set; } = false;/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [AutoGenerateColumn(Ignore = true)]public int? ParentId { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [AutoGenerateColumn(Ignore = true)]public string Path { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [AutoGenerateColumn(Ignore = true)]public int? Deep { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [Display(Name = "排序号")]public int? OrderNum { get; set; } = 0;/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>      [Display(Name = "名称")][Required(ErrorMessage ="{0}不能为空")]public string Name { get; set; }/// <summary>/// Desc:/// Default:/// Nullable:True/// </summary>           [AutoGenerateColumn(Ignore = true)]public long? UserId { get; set; }}
 
使用
//注入对话框服务
[Inject]
private DialogService DialogService { get; set; }
......//随便一个按钮绑定一个事件public async Task AddRootBtn()
{var option = new EditDialogOption<T_Joint>(){Title = "节点编辑",Model = new T_Joint() { },RowType = RowType.Inline,ItemsPerRow = 2,ItemChangedType = ItemChangedType.Update,Items = Items,};await DialogService.ShowEditDialog(option);
} 
使用效果

