Я пытаюсь выполнить проверку формы моего отчета, где отчет можно отправить только в том случае, если в электронном письме указано "Sample@email.com". Моя проблема в том, что код работает без проверки, но когда я включаю код проверки if (!ModelState.IsValid){return View("Create");}
в мой контроллер, проверка работает отлично, но когда электронное письмо корректно, оно просто обновляет страницу, не отправляя ее или не перенаправляя в представление отправки
Контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Submit(Reports report)
{
if (!ModelState.IsValid)
{
return View("Create");
}
_reportRepository.CreateReport(report);
return View();
Код проверки:
public class EmailValidation : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var report = (Reports)validationContext.ObjectInstance;
if (report.Email == "Sample@email.com")
{
return ValidationResult.Success;
}
return new ValidationResult("Invalid email");
}
}
Отчет:
public class Reports
{
[Key]
public int ReportId { get; set; }
[Required(ErrorMessage = "Please enter email.")]
[Display(Name = "Email :")]
[EmailValidation(ErrorMessage ="enter valid email")]
public string Email { get; set; }
}
Создать вид:
@model Reports
@using Microsoft.AspNetCore.Identity
@inject UserManager<IdentityUser> UserManager
<body>
<form asp-action="Submit" method="post" role="form">
<div class="container1">
<div class=" form-group row">
<label asp-for="Email" class="col-md-2 control-label"></label>
<div class="col-md-3">
<input asp-for="Email" class="form-control" />
<span asp-validation-for="Email" class="text-danger"></span>
</div>
</div>
<div class="form-group row float-right">
<div class="col-md-offset-2 col-md-5 float-md-left">
<input type="submit" class="btn btn-primary" value="Submit" />
</div>
</div>