多种验证类型的数据注释

Data Annotations for multiple validation types

我觉得这应该很简单。我需要验证范围为 (0 - 99.999999) 的十进制值,或者我需要能够用 "TBD" 标记该值。我无法更改该要求,或者我可能已经以其他方式完成了。有没有办法通过数据注释来处理多种验证类型?我很讨厌正则表达式。如果可以那样做,谁能指出我正确的方向?

我想我是从 C# 标签中点击了这个,但我在 post 中没有看到任何标签。不管我的代码是在 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";
        }
    }
}

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