¿Cuál es la forma correcta de realizar la validación de formularios AJAX de múltiples parámetros con jQuery y ASP.NET MVC?
-
06-07-2019 - |
Pregunta
Tengo un formulario de registro para un sitio web que necesita verificar si ya existe una dirección de correo electrónico para un ID de empresa determinado. Cuando el usuario salta o hace clic fuera del campo de correo electrónico (evento borroso), quiero que jQuery se active y realice una solicitud de AJAX para que pueda advertir al usuario que debe elegir otra dirección.
En mi controlador, tengo un método como este:
public JsonResult IsEmailValid(int companyId, string customerNumber)
{
return Json(...);
}
Para hacer que esto funcione, necesitaré actualizar mis rutas para que apunten directamente a / Home / IsEmailValid
y los dos parámetros {companyId}
y {customerNumber }
. Esto parece que estoy " hackeando " Alrededor del sistema de enrutamiento y supongo que quizás haya una alternativa más limpia.
¿Hay un " propio " ¿O la forma recomendada de realizar esta tarea?
EDITAR: Lo que quise decir con las rutas es que pasar un parámetro extra ({customerNumber}) en la URL (/ Home / IsEmailValid / {companyId} / {customerNumber}) no funcionará con la asignación de ruta predeterminada.
Solución
Puede usar el jQuery Validation Plugin para hacer eso.
Tendrás que implementar tu propio método, aunque así:
$.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.");
Luego registra tu método de validación:
$("#the-form").validate({
rules: { email: { required: true, "checkCompanyEmail" : true } }
});
PS. No entiendo por qué necesitas " piratear " con enrutamiento para eso.
Otros consejos
de la documentación de validación en método remoto
remote: {
url: "check-email.php",
type: "post",
data: {
username: function() {
return $("#username").val();
}
}
}