我尝试使用数据注释在控制台应用中验证电子邮件数据类型,但它正在返回" 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);
我是否遗漏了某些内容,或者甚至可以在控制台应用中以这种方式验证数据类型?
答案 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
检查这个答案