Qual é a maneira correta de fazer multi-parâmetro de validação de formulário AJAX com jQuery e ASP.NET MVC?
-
06-07-2019 - |
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>
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();
}
}
}