Blazor输入框默认显示0的移除及空字段设置咨询
解决Blazor输入框默认显示0的问题
嘿,我来帮你搞定这个问题!你看到输入框里默认显示0,是因为你的Bag_id(long类型)和Weigth(decimal类型)都是C#的值类型——值类型的默认值就是0,Blazor的双向绑定会把这个默认值直接渲染到输入框里,所以页面加载时就会显示0。
要把输入框设为空,最直接的方法是把这些值类型改成可空值类型,这样它们的默认值就会变成null,Blazor就会渲染空的输入框了。下面是具体的修改步骤:
1. 修改Model中的属性类型
把Bag类里的Bag_id和Weigth改成可空类型(在类型后面加?),同时保留原来的验证属性,确保必填逻辑依然生效:
public class Bag { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Key] public long Id { get; set; } [Required(ErrorMessage = "Обязательное поле")] public long? Bag_id { get; set; } // 改为可空long类型 //public DateTime Report_Date { get; set; } [Required] [Column(TypeName ="decimal(4,2)")] public decimal? Weigth { get; set; } // 改为可空decimal类型 }
2. 验证逻辑依然有效
你不用担心必填验证失效——[Required]属性对可空值类型依然起作用:当用户没有输入内容时,Bag_id和Weigth会是null,这时候验证会触发你设置的错误提示,和你原来的需求一致。
3. 测试页面
修改完成后,重新运行你的应用,AddBags页面的输入框就会默认显示为空,而不是0了。用户输入数字后,双向绑定会正常将值赋值给对应的属性。
如果你的数据库表中对应的列设置了NOT NULL(不允许为空),也不用额外担心——因为验证会确保用户必须输入值,保存到数据库时属性会有有效的数值,不会出现null的情况。
内容的提问来源于stack exchange,提问作者Andrey
相关产品推荐
相关产品推荐

