在控制台应用程序中使用数据注释(特别是DataType)

时间:2015-09-28 19:38:06

标签: c# validation console-application data-annotations

我尝试使用数据注释在控制台应用中验证电子邮件数据类型,但它正在返回" true"即使我知道电子邮件地址无效(我发送" notavalidemail")。

这是我的代码。

型号:

class Email
    {
        [DataType(DataType.EmailAddress)]
        public string email { get; set; }
    }
来自Program.cs的

片段:

     Email emailAdress = new Email();
     emailAdress.email = "notavalidemail";
     var vc = new ValidationContext(emailAdress, null, null);
     var isValid = Validator.TryValidateObject(emailAdress, vc, null);

我是否遗漏了某些内容,或者甚至可以在控制台应用中以这种方式验证数据类型?

2 个答案:

答案 0 :(得分:3)

DataType属性主要用于格式化而不是验证,所以 您必须使用[EmailAddress]代替[DataType(DataType.EmailAddress)]

public class Email
{
    [EmailAddress]
    public string email { get; set; }
}

现在,如果您运行应用程序,您将收到此验证错误:

The email field is not a valid e-mail address.

还有一件事:如果您需要对所有属性进行验证,则必须传递true以获取TryValidateObject方法的最后一个参数:

var isValid = Validator.TryValidateObject(email, context, results, true);
  

如果验证所有属性,则为true;如果为false,则仅为必需属性   经过验证..

答案 1 :(得分:2)

我认为你应该使用流畅的验证。它是一个易于使用的库,您可以使用验证方法验证模型并检查提供的值是否正确。

检查以下链接:

https://fluentvalidation.codeplex.com/

以下示例可能会对您有所帮助!

http://www.codeproject.com/Articles/326647/FluentValidation-and-Unity

检查这个答案

https://stackoverflow.com/a/6807706/2191018