提问者:小点点

在MVC中使用模型数据注释验证,以确保段落包含电子邮件模式字符串


我正在尝试在ASP中创建文本框验证。NET MVC使用C#和系统。组件模型。数据注释namepsace。文本框应接受自然的人类语言,并允许1封或多封电子邮件。。。

这是我现在的密码

[RegularExpression(@"([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)", ErrorMessage = "Value Input on box1 must contain email object")]
public string Email_RawInput_1 { get; set; }

因此,如果用户键入类似的内容,它将在UI中传递而不返回错误消息。

  1. 我的电子邮件John@email.com,John92@gmail.com
  2. John@email.com;John92@gmail.com
  3. "我没有电子邮件,我用我妹妹的电子邮件,XYZ@domain.com"

但是,如果用户键入以下内容,它将无法验证

  1. 我叫约翰

我如何使用System实现这一点。组件模型。数据注释命名空间?


共2个答案

匿名用户

如果您想使用数据注释,您可以创建一个自定义属性,您可以在网上找到许多示例。然后使用自定义属性装饰您的财产

public CheckEmailAttribute : ValidationAttribute
  {
    public override IsValid(object value)
    {
    var text = value as string;

    if (this.DoesContainEmail(text))
    {
       return true;
    }

    // does not contain an Email address
    return false;
  }

private bool DoesContainEmail(string text)
{
    return Regex.IsMatch(text,@"([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)" );
}

 
}

还有另一种方法,请看一下这个链接,也许你会发现它是一个有用的库

匿名用户

using System.Net.Mail;

 private boolean EmailValidation(ByVal _emailAddress)
 {
    try
      {
           MailAddress m = new MailAddress(_emailAddress)
            return true;
      }
   catch (Exception ex)
     {
            return false;
      }
 }