Проверка определенного адреса электронной почты - модель .NET Core MVC - PullRequest
0 голосов
/ 20 сентября 2019

В модели ASP.NET Core 2.2 MVC у меня есть атрибут, определенный как

[Required, DataType(DataType.EmailAddress)]
public string StudentEmail { get; set; }

Этот, кажется, идеально подходит для проверки электронной почты на стороне пользователя.Но я хочу проверить электронную почту, которая заканчивается на @mit.edu.Пример приема электронных писем:

  • john@mit.edu
  • amy@mit.edu

Я хочу отклонить все электронные письма без этого формата.Есть ли способ определить через (даже если с регулярным выражением) атрибуты в классе модели?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

EmailAddressAttribute - это запечатанный класс, мы не можем использовать EmailAddressAttribute для создания производного от него пользовательского класса проверки, но вы можете расширить его с ValidationAttribute при создании определенных правил проверки для поля адреса электронной почты вместо использования по умолчанию.

public class CustomEmailAddressAttribute : ValidationAttribute
{

    protected override ValidationResult IsValid(
        object value, ValidationContext validationContext)
    {

        Regex rgx = new Regex(@"[a-z0-9._%+-]+@mit.edu");
        if(!rgx.IsMatch(value.ToString()))
        {
            return new ValidationResult(GetErrorMessage());
        }

        return ValidationResult.Success;
    }

    public string GetErrorMessage()
    {
        return $"Please enter a valid email which ends with @mit.edu";
    }
}

Модель:

[CustomEmailAddress]
public string StudentEmail { get; set; }

Или вы можете напрямую использовать проверку регулярных выражений, вы можете использовать следующую проверку просто:

[RegularExpression(@"[a-z0-9._%+-]+@mit.edu", ErrorMessage = "Please enter a valid email which ends with @mit.edu")]
public string StudentEmail { get; set; }
0 голосов
/ 20 сентября 2019

На основе Как проверить адрес электронной почты с помощью регулярного выражения? post, может быть, что-то подобное может сработать:

((?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@mit\.edu)

Это также проверяет сам почтовый префикс.Если вам нужна только часть суффикса, может быть, это?

 .+@mit\.edu
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...