Как правильно выполнить проверку многопараметрической формы AJAX с помощью jQuery и ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/1615144

Вопрос

У меня есть регистрационная форма для веб-сайта, которая должна проверить, существует ли уже адрес электронной почты для данного идентификатора компании.Когда пользователь нажимает вкладку или выходит из поля электронной почты (событие размытия), я хочу, чтобы 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();
        }
      }
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top