Was ist der richtige Weg, Multi-Parameter-AJAX Formularvalidierung mit jQuery und ASP.NET MVC zu tun?

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

Frage

Ich habe ein Anmeldeformular für eine Website, wenn eine E-Mail-Adresse ist bereits für ein bestimmtes Unternehmen id existiert überprüfen muss. Wenn der Benutzer Tabs oder Klicks aus dem E-Mail-Feld (Blur-Ereignis), mag ich jQuery eine AJAX-Anforderung gehen und tun, so kann ich dann den Benutzer warnen, die sie benötigen, eine andere Adresse wählen.

In meinem Controller, ich habe eine Methode wie folgt aus:

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

Um diese Arbeit zu machen, ich muss meine Routen aktualisieren, direkt zu Punkt /Home/IsEmailValid und die beiden Parameter {companyId} und {customerNumber}. Dies scheint, wie ich „Hacking“ um in dem Routing-System bin und ich vermute, vielleicht gibt es eine saubere Alternative.

Gibt es eine „richtige“ oder empfohlen, diese Aufgabe zu erfüllen?

EDIT:. Was ich von den Strecken gemeint ist, dass in zusätzliche Parameter übergeben ({} customer) in der URL (/ Home / IsEmailValid / {CompanyID} / {} customer) nicht mit dem Standard-Route-Mapping arbeiten

War es hilfreich?

Lösung

Sie können die jQuery Validierung Plugin , das zu tun.

Du wirst haben eine eigene Methode zu implementieren, obwohl wie folgt aus:

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

Dann werden Ihre Validierungsmethode registrieren:

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

PS. Ich verstehe nicht, warum Sie mit Routing „um Hack“ müssen dafür.

Andere Tipps

von der Validate-Dokumentation unter Remote-Methode

    remote: {
      url: "check-email.php",
      type: "post",
      data: {
        username: function() {
         return $("#username").val();
        }
      }
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top