Я создал приложение MVC C # с ViewModel, все свойства которого [требуются], а также создал соответствующее представление, моя проблема в том, что мне нужно зафиксировать событие щелчка из кнопки отправки, чтобы сделать некоторые проверки, поэтому я 'решил использовать jQuery для захвата события щелчка следующим образом:

 $("#IngresarInfo").click(function (e) {
            e.preventDefault();
            $("#idISSSBuscar").rules("remove", "required");
            $.ajax({ ... some code here

Но если я использую e.preventDefault();, проверка [требуется] действительно работает (не показывает никаких сообщений об ошибках), и я хочу сначала подтвердить, что все входные данные формы заполнены, а затем выполнить проверку.

Не могли бы вы сказать мне, что не так с моим кодом?

-1
Pablo Tobar 19 Июл 2017 в 16:18
1
what i want is first to validate that all the forms inputs are completed and after that make the validation. => что вы имеете в виду?
 – 
Anant Kumar Singh
19 Июл 2017 в 16:20
what i want is first to validate that all the forms inputs are completed and after that make the validation Итак, вы хотите провести проверку перед проверкой ...? Боюсь, это не имеет смысла
 – 
Rory McCrossan
19 Июл 2017 в 16:24
Я написал: мне нужно захватить событие щелчка из кнопки отправки, чтобы сделать некоторые проверки, ясно?
 – 
Pablo Tobar
19 Июл 2017 в 16:26
1
Tobar, похоже, вы хотите использовать проверку, предлагаемую HTML5, а также собственную настраиваемую проверку. Что вы можете сделать, так это создать функцию «сниффер страницы», которая запускается при нажатии и будет искать любой элемент ошибки, созданный браузером. Если ошибка существует, не запускайте пользовательскую проверку, но если ошибки не возникает, выполните проверку.
 – 
Alexander Dixon
19 Июл 2017 в 16:27
1
Вам, вероятно, следует подумать о создании собственного настраиваемого атрибута, если вы хотите использовать существующую архитектуру проверки: stackoverflow.com/questions/11959431/…
 – 
JuanR
19 Июл 2017 в 16:49

1 ответ

Лучший ответ

Да, когда вызывается e.PreventDefault (), процесс по умолчанию останавливается. то есть действие контроллера на стороне сервера не будет вызываться по умолчанию.

Из документации jQuery

Если этот метод вызывается, действие события по умолчанию не запускается.

Если вы хотите продолжить действие контроллера после вызова e.PreventDefault, вам нужно будет отправить форму самостоятельно.

Другой вопрос. зачем это вообще? Если вы оставили MVC для проверки модели представления по умолчанию, вы можете найти Model.IsValid в своем действии публикации и вернуть исходное представление с ошибками проверки.

Похоже, вы пытаетесь имитировать именно это поведение, но я не знаю, что вы от этого выиграете.

0
Fran 19 Июл 2017 в 16:51
Спасибо, я хочу сделать это так, потому что товарищ по команде добился этого, и я написал точно такой же код с моей логикой, но не работал
 – 
Pablo Tobar
19 Июл 2017 в 16:30