Qual é a maneira correta de fazer multi-parâmetro de validação de formulário AJAX com jQuery e ASP.NET MVC?

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

Pergunta

Eu tenho um formulário de inscrição no site que precisa de verificar se um endereço de e-mail já existe para um determinado ID de empresa. Quando as guias do usuário ou cliques para fora do campo email (evento blur), eu quero jQuery para sair e fazer uma solicitação AJAX para que eu possa então avisar o usuário que precisa escolher outro endereço.

No meu controlador, eu tenho um método como este:

public JsonResult IsEmailValid(int companyId, string customerNumber)
{            
  return Json(...);
}

Para fazer este trabalho, vou precisar atualizar meus rotas para apontar diretamente para /Home/IsEmailValid eo {companyId} dois parâmetros e {customerNumber}. Isto parece como eu estou "hacking" em torno do sistema de roteamento e eu estou supondo que talvez haja uma alternativa mais limpa.

Existe uma maneira "adequada" ou recomendados para realizar essa tarefa?

EDIT: O que eu quis dizer com as rotas é que passando no parâmetro extra ({CUSTOMERNUMBER}) na URL (/ home / IsEmailValid / {CompanyID} / {CUSTOMERNUMBER}) não vai funcionar com o mapeamento rota padrão <. / p>

Foi útil?

Solução

Você pode usar o jQuery Validation Plugin para fazer isso.

Você vai ter que implementar seu próprio método embora assim:

$.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.");

Em seguida, registrar o seu método de validação:

$("#the-form").validate({
   rules: { email: { required: true, "checkCompanyEmail" : true } } 
});

PS. Eu não entendo por que você precisa "cortar ao redor", com encaminhamento para isso.

Outras dicas

a partir da documentação de validação sob método remoto

    remote: {
      url: "check-email.php",
      type: "post",
      data: {
        username: function() {
         return $("#username").val();
        }
      }
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top