如何在 ASP.NET MVC 中的文本框中仅允许特定的 Decimal 值

How to Allow Only specific Decimal values in a text box in ASP.NET MVC

提问人:Neptune_Code 提问时间:8/23/2022 最后编辑:Wiktor StribiżewNeptune_Code 更新时间:8/24/2022 访问量:95

问:

我有一个名为 UnitValue 的文本框,它应该只接受 3 个十进制值,即 0.1、0.2、0.3。

我正在我的模型类中的“UnitValue”属性上使用数据注释来验证整数的值,如下所示,例如,

[RegularExpression(“[0]{1}|[1]{1}“,ErrorMessage=”error“)
public int UnitHead {get;设置;}

公共十进制 UnitValue{get;set}
我也希望十进制属性也能以类似的方式发生。请求您帮助完成此验证。

提前致谢

ASP.NET-MVC 验证 数据批注 decimalformat

评论


答:

1赞 Sain Pradeep 8/23/2022 #1

您可以创建自己的自定义验证,如下所示

    public class CustomDecimalValues:ValidationAttribute  
    {  
        public override bool IsValid(object value)  
        {  
            // write your own logic for validation
            var decPlaces = (int)(((decimal)value% 1) * 100); 
            return (0.1<= decPlaces &&  decPlaces <= 0.3);  
        }  
    }  

然后在这样的模型中使用

[CustomDecimalValues(ErrorMessage = "Allowed decimal values are 0.1,0.2 and 0.3")]  
Public decimal UnitValue{get;set} 

请使用链接自定义验证找到完整示例

评论

0赞 Neptune_Code 8/23/2022
谢谢@Sain普拉迪普。它几乎可以工作了,我需要将其用于 POCO 类中的多个属性,但即使值为空(非必填字段)也会触发此方法。知道如何克服这个问题吗?
0赞 Sain Pradeep 8/23/2022
put if 语句绕过空值 if (value is null){ return true;