Wir haben oft Probleme mit .NET-Validatoren bei Elementen, die mit JavaScript / CSS ausgeblendet sind (d.h. display:none)
Zum Beispiel (es können Syntaxfehler vorhanden sein, aber kümmern Sie sich nicht darum)
...
mit JavaScript:
$('#chkNewsletter').changed(function() {
$(this).is(':checked') ? $('#newsletterOnly').show() : $('#newsletterOnly').hide();
});
Es sollte txtEmail nicht validieren, wenn es ausgeblendet ist.
Sie können das Formular nicht senden, wenn newsletterOnly ausgeblendet ist, da der RequiredFieldValidator immer noch wirksam ist, obwohl er ausgeblendet ist :(
Und Sie können nicht einmal die Fehlermeldung des Validierungssteuer elements sehen, weil es ausgeblendet ist
Gibt es einen Ausweg aus diesem Dilemma?
Ich versuche, PostBacks zu vermeiden, um die Benutzererfahrung zu verbessern.
Ich wünschte, ich könnte das .NET-Javascript so ändern, dass Steuerelemente nur validiert werden, wenn sie sichtbar sind.
0 Stimmen
Hast du versucht, die versteckten Elemente zu deaktivieren? Ich würde erwarten, dass das die Lösung ist.
0 Stimmen
Was ist mit der Möglichkeit, beim Posten an den Server zwei verschiedene Ansichtsmodelle zu verwenden: eins für jede der verschiedenen Situationen? Du müsstest nur an zwei verschiedenen Routen posten.
0 Stimmen
Alternativ müssten Sie Ihre Validierung im JavaScript durchführen, anstatt auf dem Server.
0 Stimmen
@MAT GAL Deaktivieren sie mit JS? Ich würde lieber meine eigenen Validierungen schreiben, oder? @Eli Nicht sicher, was du meinst, tut mir leid. Ich habe das Beispiel klarer gemacht. @arcynum Das ist es, was ich vermeiden will