Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证十进制值_C#_Asp.net Mvc - Fatal编程技术网

C# 验证十进制值

C# 验证十进制值,c#,asp.net-mvc,C#,Asp.net Mvc,我希望能做这样的事情: public class MinimumSalaryAttribute : ValidationAttribute { private readonly decimal _minValue; public MinimumSalaryAttribute(decimal minValue) { _minValue = minValue; } public ov

我希望能做这样的事情:

 public class MinimumSalaryAttribute : ValidationAttribute
    {
        private readonly decimal _minValue;

        public MinimumSalaryAttribute(decimal minValue)
        {
            _minValue = minValue;
        }

        public override bool IsValid(object value)
        {
            return (decimal)value > _minValue;
        }
    }
在我看来:

[MinimumSalary(0M)]
public decimal Salary { get; set; }
这将防止用户输入负小数。但是,我得到一个编译器错误:“不是有效的属性类型”。我理解如下所述的原因:

“我的花瓶”的解决方法是什么?

您可以使用“范围”注释; 10.50D为最小值,50.80D为最大值

[Range(10.50D,50.80D,ErrorMessage ="Error min")]
public decimal Salary { get; set; }

范围属性指定数据字段值的数值范围约束。它附带System.ComponentModel.DataAnnotations(在System.ComponentModel.DataAnnotations.dll中)

您真的需要在这里使用十进制吗?你会把薪水限制在12.56英镑吗?只需使用
int
。这意味着您可以只使用正常的
范围
属性。您确定
有效吗?如果
value>=\u minValue
…@PeterB,我会说它应该返回true,我已经纠正了这个问题。谢谢。嗯,是的,这是一种黑客行为,但这是实现这一点最简单的方式。只有黑客才能绕过这样一个事实:属性参数不能使用十进制。只有在马克·扎克伯格(MarkZuckerberg)的情况下才可以:)谢谢。这似乎有效。向下的投票人能解释出什么问题吗?@w0051977我猜投票是因为答案的质量,因为它只是一个代码转储,没有解释为什么它会起作用。@DavidG,如果我看到这个答案,我会向上投票,我会的。我觉得它既清楚又简洁。也许再写一段会有帮助。原则上有什么问题吗?谢谢。@w0051977任何实际上只是代码转储的帖子都没有用。这一个回答了您的问题,但没有解释为什么可以使用
double
,甚至数字是
double
。所以就我个人而言,我认为它不值得以目前的形式投票。@DavidG,够公平了。