Проверка электронной почты с Regex не работает. ASP: NET MVC C# Visual Studio 2017 - PullRequest
0 голосов
/ 03 апреля 2020
  • Когда я редактирую данные из моей таблицы данных, я хочу, чтобы электронная почта была действительной электронной почтой, поэтому я должен добавить подтверждение ошибки, когда пользователь вставил неверный формат электронной почты.

  • В моем контроллере я поместил код, чтобы сделать это, поэтому, когда пользователь нажимает сохранить, отображается ошибка, но при отображении ошибки данные сохраняются и должны сохраняться только при правильном формате.

Я не знаю, как заставить это работать. Я должен использовать регулярные выражения. Также мое регулярное выражение для проверки электронной почты не очень эффективно

Мой код:

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult EditData(ModelTemplateEmail modelEmail)
    {
        UpdateEmail(modelEmail.EmailId, modelEmail.userName, modelEmail.Title, 
                       modelEmail.Email,modelEmail.description, modelEmail.languageID);


        if (string.IsNullOrEmpty(modelEmail.userName))
        {
            ModelState.AddModelError("UserName", "Please enter a user name");

        }

        else if (modelEmail.userName.Length > 20)
        {
            ModelState.AddModelError("UserName", "Please enter less than 20 characters");
        }



        if (string.IsNullOrEmpty(modelEmail.Email))
        {
            ModelState.AddModelError("Email", "Please enter an Email");
        }
        else if (!Regex.Match(modelEmail.Email, @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$").Success)
        {
            MessageBox.Show("Please enter a valid email", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);


        }


        if (ModelState.IsValid)
        {         
            return RedirectToAction("EmailData");
        };
        MainLanguagelist();

        return View ();

    }

1 Ответ

1 голос
/ 03 апреля 2020

Всякий раз, когда проверка завершается неудачно, добавляется ошибка, вы должны вернуть View, чтобы вернуться к View, из которого будет отображаться сообщение об ошибке.

if (string.IsNullOrEmpty(modelEmail.Email))
{
    ModelState.AddModelError("Email", "Please enter an Email");
    return View();
}
else if (!Regex.Match(modelEmail.Email, @"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$").Success)
{
    ModelState.AddModelError("Email", "Please enter a valid email");
    return View();
}
...