Validierung für bestimmte Felder deaktivieren

8

In meiner Razor-Ansicht (ASP.NET MVC 4) habe ich zwei Radiobuttons zum Ein- / Ausblenden einiger Felder. Wenn der erste Radiobutton ausgewählt ist, sind diese Felder nicht sichtbar. Wenn der zweite Radiobutton ausgewählt ist, werden die Felder sichtbar. Dies geschieht durch eine Javascript-Funktion, die an das radiobuttons onclick-Ereignis gebunden ist.

%Vor%

Ich verwende Datenanmerkungen im Ansichtsmodell, um die Validierung durchzuführen. Mein Problem ist, dass die unsichtbaren Felder auch validiert werden. Diese Felder müssen nur validiert werden, wenn sie sichtbar sind. Ich habe versucht, das Data-Val-Attribut auf den Eingabeelementen zu manipulieren, aber das funktioniert nicht.

%Vor%

Wie kann ich mein Problem lösen? Gibt es eine Möglichkeit, die Überprüfung für die Felder zu deaktivieren, die durch clientseitiges JavaScript nicht sichtbar sind? Ansonsten muss ich ein Postback machen, um die Felder bedingt zu rendern.

    
ngruson 20.11.2012, 11:27
quelle

4 Antworten

6

Ich habe es gelöst, indem ich unten auf meiner Seite das folgende JavaScript eingefügt habe:

%Vor%

Auf diese Weise werden alle Eingaben mit der Klasse .hidden in der clientseitigen Validierung ignoriert.

    
ngruson 21.11.2012 13:22
quelle
2
%Vor%     
Owen 13.07.2013 08:56
quelle
1

Ich würde vorschlagen, jQuery-Validierung zu verwenden. Sie können Ihr Modell bedingt validieren:

%Vor%

Das Problem wird auf dem Back-End sein. Wenn Sie Datenannotationen verwenden, würde ich annehmen, dass Sie das Modell auch im Controller validieren. etwas wie 'Model.isValid ()' oder ähnliches? Solange beide Fälle (Radio-Button1-Klick oder Button2-Klick) immer übereinstimmen mit dem, was ein "gültiges" Modell sein sollte, ist alles in Ordnung. Andernfalls müssen Sie möglicherweise einige Datenanmerkungen deaktivieren. Nur aus meiner Erfahrung. jQuery Validation Docs

    
TNCodeMonkey 20.11.2012 14:49
quelle
0

Standardmäßig (zumindest in den späteren Versionen der unauffälligen Validierung) wird das ignore-Feld auf ": hidden" gesetzt (ausgewertet von jQuery), was viel besser ist, als nur eine class="hidden" oder type="hidden" zu überprüfen ".

    
Aycox 13.05.2015 07:45
quelle

Tags und Links