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