You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:11:06