Qual è il modo corretto di eseguire la convalida del modulo AJAX multiparametrico con jQuery e ASP.NET MVC?

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

Domanda

Ho un modulo di registrazione per un sito Web che deve verificare se esiste già un indirizzo email per un determinato ID azienda. Quando l'utente esegue la tabulazione o fa clic fuori dal campo e-mail (sfocatura evento), desidero che jQuery si spenga e faccia una richiesta AJAX in modo da poter quindi avvisare l'utente che deve scegliere un altro indirizzo.

Nel mio controller, ho un metodo come questo:

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

Per farlo funzionare, dovrò aggiornare i miei percorsi in modo che puntino direttamente a / Home / IsEmailValid e ai due parametri {companyId} e {customerNumber } . Sembra che io sia "hackeratore" in giro nel sistema di routing e suppongo che forse ci sia un'alternativa più pulita.

Esiste un "corretto" o modo consigliato per eseguire questa attività?

EDIT: ciò che intendevo per route è che passare il parametro aggiuntivo ({customerNumber}) nell'URL (/ Home / IsEmailValid / {companyId} / {customerNumber}) non funzionerà con la mappatura di route predefinita.

È stato utile?

Soluzione

Puoi utilizzare il Plugin di convalida jQuery per farlo.

Dovrai implementare il tuo metodo anche se in questo modo:

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

Quindi registra il tuo metodo di validazione:

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

PS. Non capisco perché devi " hackerare " con il routing per quello.

Altri suggerimenti

dalla documentazione valida sotto metodo remoto

    remote: {
      url: "check-email.php",
      type: "post",
      data: {
        username: function() {
         return $("#username").val();
        }
      }
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top