¿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?

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

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.

¿Fue útil?

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();
        }
      }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top