Как правильно выполнить проверку многопараметрической формы AJAX с помощью jQuery и ASP.NET MVC?
-
06-07-2019 - |
Вопрос
У меня есть регистрационная форма для веб-сайта, которая должна проверить, существует ли уже адрес электронной почты для данного идентификатора компании.Когда пользователь нажимает вкладку или выходит из поля электронной почты (событие размытия), я хочу, чтобы jQuery отключился и выполнил AJAX-запрос, чтобы затем я мог предупредить пользователя, что ему нужно выбрать другой адрес.
В моем контроллере у меня есть такой метод, как этот:
public JsonResult IsEmailValid(int companyId, string customerNumber)
{
return Json(...);
}
Чтобы это сработало, мне нужно будет обновить свои маршруты, чтобы они указывали непосредственно на /Home/IsEmailValid
и эти два параметра {companyId}
и {customerNumber}
.Похоже, что я "взламываю" систему маршрутизации, и я предполагаю, что, возможно, есть более чистая альтернатива.
Есть ли "правильный" или рекомендуемый способ выполнения этой задачи?
Редактировать:Что я имел в виду под маршрутами, так это то, что передача дополнительного параметра ({CustomerNumber}) в URL (/Home/IsEmailValid/{CompanyID}/{CustomerNumber}) не будет работать с сопоставлением маршрутов по умолчанию.
Решение
Вы можете использовать Плагин проверки jQuery чтобы сделать это.
Однако вам придется реализовать свой собственный метод следующим образом :
$.validator.addMethod("checkCompanyEmail", function(value, element) {
var email = value;
var companyID = //get the companyID
var result;
//post the data to server side and process the result and return it
return result;
}, "That company email is already taken.");
Затем зарегистрируйте свой метод проверки :
$("#the-form").validate({
rules: { email: { required: true, "checkCompanyEmail" : true } }
});
PS.Я не понимаю, зачем вам для этого нужно "халтурить" с маршрутизацией.
Другие советы
из проверочной документации по удаленному методу
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $("#username").val();
}
}
}