Här kommer jag att förklara hur man koda en återanvändbar, universal, CheckBoxValidator kontroll Omdömen
Jag gillar att kalla det "universella", eftersom det är i stånd att bekräfta. :
Fullständig källkod är fäst längst ner i denna artikel. Omdömen
Låt oss ge en titt på någon del av koden.
Omdömen
Först av allt har CheckBoxValidator att ärva från BaseValidator och genomföra åtminstone den viktigaste metoden en validator behöver: EvaluateIsValid.The CheckBoxValidator utsätter också MinimumChecked och MaximumChecked fastigheter att låta oss definiera vid design gången hur många kryssrutor får väljas Omdömen.
public class CheckBoxValidator: BaseValidator {privat kontroll _controlToValidate; privata Lista _checkBoxes; private int _minimumChecked = 1; private int _maximumChecked = int.
MaxValue; public int MinimumChecked {få {return _minimumChecked; } Set {_minimumChecked = värde; }} Public int MaximumChecked {få {return _maximumChecked! = Int.MaxValue? _maximumChecked: 0; } Set {_maximumChecked = värde! = 0? värde: int.MaxValue; }} Skyddade override bool EvaluateIsValid () {int count = getCheckedCount (); tillbaka count> = _minimumChecked && count}} Omdömen
Som ni kan se, blir utvärderingsfunktionen en Antalet valda kryssrutor och verifierar om det är inom det tillåtna range.
Here är getCheckedCount () metoden:
private int getCheckedCount () {int count = 0; foreach (objektkryssrutan _checkBoxes) {bool; if (kryssrutan är listitem) valts = ((listitem) ruta) .Selected; if (kryssrutan är CheckBox) valts = ((CheckBox) ruta) .Checked; if (vald) count ++; } Retur räkna;} Omdömen
Du kan märka listan _checkBoxes faktiskt innehåller inte bara kryssrutor. Det är en lista över objekt och kan innehålla CheckBox objekt, liksom listitem objects.This är att göra det möjligt för validator att hantera både CheckBox och CheckBoxList objects.
You hittar getCheckBoxes () metoden i den bifogade källfilen. Omdömen
Det finns en annan metod valideraren behöver åsidosätta: ControlPropertiesValid.The BaseValidator åberopar denna metod för att kontrollera om egenskapen ControlToValidate är rätt inställd Omdömen
skyddat åsidosätta bool ControlPropertiesValid () {_controlToValidate = Page.FindControl (ControlToValidate. ); bool isValid = _controlToValidate är CheckBox || _controlToValidate är CheckBoxList || _controlToValidate.Controls.
Count>