Почему не работает валидация на стороне сервера после настройки валидации на стороне клиента?
Приложение ASP .NET Core MVC. Есть форма для ввода данных. Код формы:
HTML-Код формы
|
1 |
@model VartanMVCv2.Domain.Entities.Client; <div class="pop_up" id="pop_up"> <div class="pop_up_container"> <div class="pop_up_body"> <div class="grid_form_container"> <div class="grid_item"> <p id="p_textForm">Оставьте заявку и мы Вам перезвоним.</p> <form action="Index" method="post" > <p2 class="validation_text"> <input class="text_input_form" type="text" name="Name" value="" placeholder="Имя" asp-for="Name" data-val-required="Это поле не долно быть пустым" /> <span asp-validation-for="Name"/> </p2> <p2 class ="validation_text"> <input class="text_input_form" type="text" name="Phone" value="" placeholder="Телефон" asp-for="Phone" data-val-required="Это поле не долно быть пустым" /> <span asp-validation-for="Phone" /> </p2> <p2 class="validation_text"> <input class="text_input_form" type="text" name="Email" value="" placeholder="Email" asp-for="Email" data-val-email="Некорректный Email адрес" /> <span asp-validation-for="Email" /> </p2> <div class="time_selection"> <label for="time" class="lab_chk_time">Позвонить с: </label> <input type="time" id="time" name="time" /> </div> <button name="acceptBtn" id="accept" type="submit" value="Send">Создать заявку</button> </form> <div class="pop_up_close" id="pop_up_close">&#10006</div> </div> <div class="grid_item_1" > <div class="image_person"><img src="~/images/form_person.png"></div> </div> </div> </div> </div> </div> |
Три поля для ввода данных с настроенной валидацией на стороне клиента и сервера. Только по нажатию кнопки acceptBtn вместо перехода к post - методу всплывает окно:
Что я делаю не так? Как по нажатию кнопки вызвать post - метод index? Подскажите. будьте добры.
Код контроллера
|
1 |
public class HomeController : Controller { [HttpGet] public IActionResult Index() { return View(); } [HttpPost] public IActionResult Index(Client client) { if (ModelState.IsValid) { return View("Confirm"); } return View(); } |
Модель
|
1 |
public class Client { [Required] public Guid Id { get; set; } [Required] public string Name { get; set; } [EmailAddress] public string Email { get; set; } [Required] [Phone] public string Phone { get; set; } public DateTime? CallTime { get; set; } public Client() { } private Guid GetId() { Guid id = Guid.NewGuid(); return id; } |
Дополнительно:
Разобрался в проблеме! Выкладываю вдруг кому пригодиться. Библиотеки валидации нужно подключать в самом начале, сразу после jqwery.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?

Проблема возникла, скорее всего, из-за неправильной синхронизации между валидацией на стороне клиента и на стороне сервера.
Настройка валидации на стороне на JavaScript обычно используется для удобства пользователей, чтобы они могли видеть ошибки немедленно, без необходимости отправлять форму на сервер. Однако, необходимо помнить, что валидация на клиентской стороне может быть обойдена злоумышленником, поэтому валидация на сервере обязательна для безопасности данных.
Проверьте, что ваши правила валидации на сервере соответствуют тем, что используются на клиентской стороне. Возможно, вы пропустили какие-то особенности или случаи, которые не были учтены при написании кода.
Также удостоверьтесь, что вы отправляете данные на сервер после их валидации на клиентской стороне. Если данные не отправляются, то сервер не будет знать о результатах валидации и не сможет выполнить свою часть задачи.
И еще один важный момент - убедитесь, что вы используете одинаковые методы валидации на обеих сторонах. Например, если на клиентской стороне вы используете JavaScript для валидации email, то на сервере также следует использовать проверку на корректный формат email.
В целом, для решения данной проблемы необходимо тщательно проверить соответствие правил валидации на обеих сторонах, убедиться в правильной передаче данных на сервер после валидации на клиентской стороне и использовать одинаковые методы валидации на обеих сторонах.