FluentEditForm已填写数据仍提示未填写,代码问题求助
问题分析与解决方案
你的代码核心问题在于缺少模型层面的验证注解,导致Blazor的验证系统无法正确识别必填规则,具体细节和修复方式如下:
问题根源
你在FluentTextField上添加了Required参数,这仅会在UI上显示必填标记(如红色星号)并触发HTML5原生验证,但Blazor的DataAnnotationsValidator组件是基于模型类的数据注解特性来执行验证逻辑的。如果你的Movie实体类没有对对应属性添加[Required]注解,验证系统会判定字段未满足必填要求,即使你已经填写了内容。
修复步骤
修改Assignment10.Entities命名空间下的Movie实体类,为需要必填的属性添加[Required]数据注解:
using System.ComponentModel.DataAnnotations; namespace Assignment10.Entities { public class Movie { [Required(ErrorMessage = "请输入电影名称")] public string MovieName { get; set; } [Required(ErrorMessage = "请输入发行方")] public string Publisher { get; set; } [Required(ErrorMessage = "请输入电影描述")] public string MovieDescription { get; set; } } }
额外检查点
- 你的代码中
@bind-Value的绑定逻辑是正确的,无需修改。 - 如果使用可空字符串类型(
string?),[Required]注解依然会生效,要求属性不能为null或空字符串。 - 若仍存在验证冲突问题,可以移除
FluentTextField上的Required参数,避免HTML5原生验证与Blazor模型验证逻辑互相干扰,仅依赖模型注解完成验证。
内容的提问来源于stack exchange,提问作者user3776241
相关产品推荐
相关产品推荐

