当前位置: 首页 > news >正文

Blazor-EditContext

EditContext 是 Blazor 中用于管理表单状态和验证的核心类。EditContext 称为编辑上下文对象,在编辑表单中,可以绑定模型对象。它跟踪表单字段的修改状态、验证状态,并提供事件通知机制(如 OnFieldChanged 和 OnValidationStateChanged)。

绑定方式

如何使用EditContext 绑定模型对象

示例

@page "/EditContextDemo"
<h3>EditContextDemo</h3>
<EditForm EditContext="editContext" OnSubmit="Submit"><div class="mb-3"><label class="form-label">Name</label><InputText class="form-control" @bind-value="Model!.Name"/></div><div class="mb-3"><button class="btn btn-primary" type="submit">提交</button></div>
</EditForm>
@code {public User? Model { get; set; }private EditContext? editContext;protected override void OnInitialized(){Model = new User();editContext = new EditContext(Model);}void Submit(){Console.WriteLine(Model?.Name);}
}

在OnInitialized生命周期方法中初始化,User类实例Model。

editContext实例通过Model对象创建,跟踪表单的编辑状态和验证。

通过以上的方式我们就可以通过EditContext与属性进行绑定

运行结果:

在这里插入图片描述

获取字段定义

使用editContext.Field("xxx")方法可以获得绑定模型的字段定义

示例

@page "/EditContextDemo"
<h3>EditContextDemo</h3>
<EditForm EditContext="editContext" OnSubmit="Submit"><div class="mb-3"><label class="form-label">Name</label><InputText class="form-control" @bind-value="Model!.Name"/></div><div class="mb-3"><button class="btn btn-primary" type="submit">提交</button></div>
</EditForm>
@code {public User? Model { get; set; }private EditContext? editContext;protected override void OnInitialized(){Model = new User();editContext = new EditContext(Model);}void Submit(){var field = editContext.Field("Name");Console.WriteLine(Model?.Name);Console.WriteLine($"字段名:{field.FieldName},字段所在的模型:{field.Model}");}
}

我们使用 editContext.Field("Name");方法就可以获得所绑定模型的字段定义

运行结果

在这里插入图片描述

OnFieldChanged事件使用

在 EditContext 对象中有一个 OnFieldChanged 事件,当表单中的任何绑定的字段值发生变化,就会触发该事件。
在 FieldChaged 事件处理程序中,需要带有(object? sender,Field Changed EventArgse)这 2 个参数,使用 e.F ieldIdentifier 可以得到当前值发生改变的字段定义。

示例

@page "/EditContextDemo"
@implements IDisposable
<h3>EditContextDemo</h3>
<EditForm EditContext="editContext" OnSubmit="Submit"><div class="mb-3"><label class="form-label">Name</label><InputText class="form-control" @bind-value="Model!.Name"/></div><div class="mb-3"><button class="btn btn-primary" type="submit">提交</button></div>
</EditForm>
@code {public User? Model { get; set; }private EditContext? editContext;protected override void OnInitialized(){Model = new User();editContext = new EditContext(Model);editContext.OnFieldChanged += EditContextOnOnFieldChanged;}private void EditContextOnOnFieldChanged(object? sender, FieldChangedEventArgs e){Console.WriteLine($"值发生变化的字段:{e.FieldIdentifier.FieldName}");}void Submit(){var field = editContext!.Field("Name");Console.WriteLine(Model?.Name);Console.WriteLine($"字段名:{field.FieldName},字段所在的模型:{field.Model}");}public void Dispose(){// TODO 在此释放托管资源editContext!.OnFieldChanged -= EditContextOnOnFieldChanged;}}

当姓名输入框失去焦点时会触发EditContextOnOnFieldChanged

运行结果

在这里插入图片描述

参数使用

对于< EditForm>组件,在 OnSubmit、OnInvalidSubmit、OnValidSubmit 这 3 个事件挂载的事件处理程序中,都可以使用EditContext 类型的参数。

void Submit(EditContext editContext){Console.WriteLine(editContext.Field("FullName").FieldName);}

在事件方法中直接添加EditContext

http://www.lqws.cn/news/486901.html

相关文章:

  • 智能化战略实施服务,AI咨询与部署全流程支持
  • [2025CVPR]DeepLA-Net:深度局部聚合网络解析
  • STaR: Self-Taught Reasoner Bootstrapping Reasoning With Reasoning论文笔记
  • ISCSI存储
  • Java性能优化权威指南-操作系统性能监控
  • FreeRTOS 介绍、使用方法及应用场景
  • redis如何使用IO多路复用
  • 从语言到生态:编程语言在各行业的应用格局与未来演进
  • Data Vault 初探(五) —— 定期装载_SQL
  • 从java角度理解io多路复用和redis为什么使用io多路复用
  • docker启动的rabbitmq搭建并集群和高可用
  • AS32系列MCU芯片I2C模块性能解析与调试
  • 秘塔AI搜索:国产无广告智能搜索引擎,重塑高效信息获取体验
  • 1 Studying《Systems.Performance》1-6
  • 跨域视角下强化学习重塑大模型推理:GURU框架与多领域推理新突破
  • 黑马python(十三)
  • 二刷苍穹外卖 day03
  • K8s入门指南:架构解析浓缩版与服务间调用实战演示
  • C#Halcon从零开发_Day14_AOI缺陷检测策略1_Bolb分析+特征分析_饼干破损检测
  • 国产12537穿甲弹侵彻仿真(显式动力学)
  • DeepSeek15-揭密模型上下文协议(MCP)
  • 从零开始手写redis(15)实现自己的 HashMap
  • 大模型LoRA微调实践
  • C语言:位段
  • Python期末速成
  • 没掌握的知识点记录
  • day39/60
  • 链接脚本基础语法
  • Python打卡训练营Day56
  • 给同一个wordpress网站绑定多个域名的实现方法