2010-08-19 3 views
5

Ich habe eine Gruppe von Textfeldern, für die eine Feldvalidierung erforderlich ist. Offensichtlich teilen sie alle den gleichen Validierungsgruppennamen. Ich habe ein Kontrollkästchen für Nutzungsbedingungen, die überprüft werden müssen, bevor Sie auf den Absenden-Button klicken.Erzwingen, dass eine Validierungsgruppe fehlschlägt, wenn eine Bedingung nicht erfüllt ist

Gibt es C# -Code, der sagt, wenn dieses Kontrollkästchen nicht aktiviert ist, die Validierungsgruppe nicht?

Oder gibt es einen besseren Weg?

bearbeiten: Ich habe einen benutzerdefinierten Validator hinzugefügt und dies in meinem Code verwendet. Funktioniert nicht.

protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) 
{ 
    args.IsValid = false; 
    if (cbxTerms.Checked) 
     args.IsValid = true; 
} 
+5

Warum die CheckBox nicht mit einem CustomValidator versehen und zur selben Validierungsgruppe hinzufügen? – SteveCav

+0

Haben Sie versucht, einen benutzerdefinierten Validator zu verwenden? – Raymund

+0

siehe oben, ich habe diese Lösung auf Ihrer Tube gesehen, aber es funktioniert nicht für mich. Ich kann nicht herausfinden warum. –

Antwort

0

Ich habe herausgefunden, wie es geht. Ich habe ein Textfeld erstellt und ihm einen Validator zugewiesen. Lege die Textbox 99999px vom Bildschirm ab. In meinem C# ich sagte, wenn das Kontrollkästchen aktiviert ist, die textbox.text = ""; in der Checkbox check changed event habe ich gesagt, wenn das Kontrollkästchen aktiviert ist dann die textbox.text = "1" ;. Viel einfacher als jede andere Lösung, die ich finden konnte

Edit: Besser, ein verstecktes Feld zu verwenden.

+0

Vergessen Sie nicht, Ihre eigene Antwort als richtig zu bestätigen – abatishchev

0

Wenn ich dies tun würde, würde ich nur JavaScript verwenden. Wenn die Seite geladen wird, hängen Sie einen clientseitigen Ereignishandler an die Schaltflächen submit an. Überprüfen Sie im Handler, ob das Kontrollkästchen aktiviert ist. Wenn ja, geben Sie true zurück, andernfalls geben Sie false zurück, was das Submit abbrechen sollte. Wenn JavaScript deaktiviert ist, dann ist das auch OK, da Sie eine serverseitige Validierung durchführen sollten, da die Benutzer Formulare auch auf andere Weise erfassen können.

0

Sie können tun, was Sie oben tun, aber mit einer Rückkehr, wenn nicht wie diese geprüft

if (!cbxTerms.Checked) 
{requiredlabel.text="*"; 
return;} 

Sie eine Markierung setzen kann manuell dem Benutzer zu sagen, dass ths Feld benötigt wird

+0

Das Problem, das ich habe, ist, dass sogar mit dem Code, den ich zur Verfügung gestellt habe, die Validierungsgruppe, die die Schaltfläche verwendet, nicht fehlschlägt, wenn die Box nicht aktiviert ist. –

0

können Sie sogar Postbacks verhindern, wenn Checkbox nicht

geprüft
Button1.Attributes["onclick"] = 
     "if (!$get('" + CheckBox1.ClientID + "').checked){alert('Agree with us,plz!');return false;}"; 

warum das Zeug Validierung alle tun, wenn es verhindert werden kann :)

oder wenn Sie zu zwingen Gruppe tou auf ungültig Thurst tun können es Ihre eigene Validierung auf Client-Seite gewinnen:

function myStartUpValidation(group){ 
    var result=true; 
    //Page_ClientValidate(group); to validate group 
    for (var i = 0; i < Page_Validators.length; i++) { 
     if(Page_Validators[i].validationGroup==group){ 
     try{ 
      ValidatorValidate(Page_Validators[i]); //this forces validation in all groups 
      if(Page_Validators[i].isvalid==false){result=false;} 
      }catch(err){} 
     } 
    } 
    return result; 
} 

oder eine zusätzliche Validator ...

Verwandte Themen