2015-03-04 7 views
5

Ich verwende MVC 4 und möchte eine einzelne Zeile aus einer Sammlung von Zeilen in einer Tabelle validieren, um sicherzustellen, dass die Felder korrekt eingegeben werden und die Validierung bestehen .Clientseitige Validierung auf Knopfdruck vor AJAX-Anforderung

Die Attribute werden auf dem Modell richtig angewendet, zum Beispiel:

[Required] 
[MaxLength(50)] 
[MinLength(5)] 
public string Name {get; set;} 

nun auf der Client-Seite - wie aktiviere ich seitige Validierung Client, bevor Sie eine AJAX-Methode aufrufen?

Um weitere Komplikationen hinzuzufügen - Ich habe eine Schaltfläche, wo Sie eine Zeile dynamisch zur Tabelle hinzufügen können, füllen Sie Felder aus und drücken Sie schließlich die Update-Taste, die einen POST über Ajax tun wird. Aber vor diesem Beitrag möchte ich diese bestimmte Zeile auf der Clientseite validieren.

wie kann ich das tun?

danke

Antwort

7

Solange Sie die Validierungs Helfer in Ihrer Ansicht sind Implementierung, das ist eigentlich ganz einfach.

var form = $('#form'); 
$.validator.unobtrusive.parse(form); 
form.validate(); 

if (form.valid()) { 
    .... ajax stuff 
} 

Rufen Sie den oben, bevor die HTTP-Anforderung zu initiieren und es wird sicherstellen, dass Ihr Formular validiert.

+0

danke! Also das funktioniert fast. Ich habe ein Problem, wo ein String erforderlich ist, aber muss mindestens 5 Zeichen und ein Maximum von 100. Wenn ich <5 eingeben, bekomme ich keine Validierungsfehler auf der Clientseite, sondern auf der Serverseite. Wenn ich nichts in das Textfeld eingebe, funktioniert die Validierung auf der Client-Seite. Gedanken? Dies ist, was im DOM ausgespuckt wird:

+0

Hmm, hast du versucht mit '[StringLength (50, MinimumLength = 5)]' '? –

+0

Okay, da dies ein anderes Problem ist, erstellen Sie eine neue Frage und fügen Sie Ihren Ansichtscode, Ihre Controller-Aktion und Ihr überarbeitetes JavaScript hinzu :) Ich würde das akzeptieren akzeptieren, wenn meine Antwort Ihr "Keine Validierung" -Abfrage gelöst hat! –