多种验证类型的数据注释

时间:2018-03-20 15:17:51

标签: c# validation data-annotations

我觉得这应该是这么简单。我需要验证一个范围为(0 - 99.999999)的十进制值,或者我需要能够使用" TBD"来标记该值。我无法改变这个要求,或者我可能以另一种方式做到了。有没有办法通过数据注释处理多种验证类型?我吮吸正则表达式。如果可以这样做,有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

我想我是从C#标签上点击过来的,但我在帖子中看不到任何标签。无论我的代码是在C#和Win Forms应用程序中。

我不确定你的意思是什么?TBD'但这对于00.000000到99.999999之间的任何数字输入都有效。请注意,这将允许小数点左边的两个值,即' 09.1'。

using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;

namespace RegexInputValidation
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        
        private void textBoxInput_TextChanged(object sender, EventArgs e)
        {
            string regex = @"^((\d{0,2}(\.\d{1,6})?)|(\.\d{1,6}))$";
            bool isValid = (Regex.IsMatch(textBoxInput.Text, regex) && !textBoxInput.Text.Contains(" ") && !textBoxInput.Text.Equals(""));

            if (isValid)
                textBoxValid.Text = "Valid input: " + double.Parse(textBoxInput.Text);
            else
                textBoxValid.Text = "TBD";
        }
    }
}

答案 1 :(得分:0)

所以,杰罗德夫是对的。使用数据注释无法正确完成此操作。我必须创建一个自定义验证器,然后在我自己的新数据注释中实现验证器。我跟着http://ezzylearning.com/tutorial/creating-custom-validation-attribute-in-asp-net-mvc学习了如何创建自己的自定义验证器。