Blazor中DxMaskedInput设置最小值与最大值的问题求助
为Blazor DxMaskedInput设置最小值与最大值的解决方案
先解决你遇到的错误
你触发的ValueExpression缺失错误,是因为单独使用Value和ValueChanged时,必须手动指定ValueExpression——双向绑定@bind-Value会自动生成这个表达式,手动拆分绑定逻辑时需要显式补充。
方案一:使用数据注解验证(推荐)
通过[Range]数据注解配合Blazor的验证体系,既能限制值范围,又能自动提供友好的错误提示,符合组件原生验证逻辑:
代码示例
<EditForm Model="@this"> <DataAnnotationsValidator /> <DxMaskedInput @bind-Value="@DealSize" CssClass="cw-320" Mask="N2" /> <!-- 显示范围验证错误提示 --> <ValidationMessage For="@(() => DealSize)" /> </EditForm> @code { using System.ComponentModel.DataAnnotations; private decimal _dealSize = 0; // 设置最小值10,最大值1000,自定义错误提示 [Range(10, 1000, ErrorMessage = "交易金额必须在10到1000之间")] public decimal DealSize { get => _dealSize; set => _dealSize = value; } }
方案二:手动处理值范围(无验证提示场景)
如果不需要验证提示,只想直接将值限制在范围内,可以手动处理ValueChanged,同时补充ValueExpression解决之前的错误:
代码示例
<DxMaskedInput Value="@_dealSize" ValueChanged="@(decimal newValue => OnDealSizeChanged(newValue))" // 必须补充的ValueExpression ValueExpression="@(() => _dealSize)" CssClass="cw-320" Mask="N2" /> @code { private decimal _dealSize = 0; // 定义最小/最大值 private readonly decimal MinDealSize = 10; private readonly decimal MaxDealSize = 1000; private void OnDealSizeChanged(decimal newValue) { // 强制将值限制在范围内 _dealSize = Math.Clamp(newValue, MinDealSize, MaxDealSize); } }
内容的提问来源于stack exchange,提问作者Daniel Vogler
相关产品推荐
相关产品推荐

