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

Using Data Annotations (specifically DataType) in a console app

我正在尝试使用数据注释在控制台应用程序中验证电子邮件数据类型,但它返回 "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);

我是不是遗漏了什么,或者甚至可以在控制台应用程序中以这种方式验证数据类型?

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

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

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

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

还有一件事:如果你需要对所有属性进行验证,你必须为TryValidateObject方法的最后一个参数传入true

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

true to validate all properties; if false, only required attributes are validated..

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

检查下面的link:

https://fluentvalidation.codeplex.com/

下面的示例可能对您有所帮助!

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

也检查这个答案