Hier zal ik uitleggen hoe je een herbruikbare, universeel, CheckBoxValidator controlecode
ik graag noemen "universeel", omdat het in staat is om te valideren. :
volledige broncode wordt op de bodem van dit artikel gevoegd.
Laten we een kijkje nemen op een deel van de code.
In de eerste plaats De CheckBoxValidator moet erven van BaseValidator en implementeren ten minste de belangrijkste methode een validator nodig: EvaluateIsValid.The CheckBoxValidator blootstelt ook MinimumChecked en MaximumChecked eigenschappen om ons te laten bepalen op design-time hoeveel vakjes mogen worden geselecteerd
.
openbare klasse CheckBoxValidator: BaseValidator {private controle _controlToValidate; private Lijst _checkBoxes; private int _minimumChecked = 1; private int _maximumChecked = int.
MaxValue; public int MinimumChecked {get {return _minimumChecked; } Set {_minimumChecked = waarde; }} Public int MaximumChecked {krijgen {return _maximumChecked! = Int.MaxValue? _maximumChecked: 0; } Set {_maximumChecked = value! = 0? value: int.MaxValue; }} Beschermd overschrijven bool EvaluateIsValid () {int count = getCheckedCount (); terug count> = _minimumChecked && count}}
Zoals u kunt zien, de evaluatie functie krijgt een telling van geselecteerde checkboxes en controleert of het binnen de toegestane range.
Here is de methode getCheckedCount ():
private int getCheckedCount () {int count = 0; foreach (object selectievakje _checkBoxes) {bool; if (selectievakje is ListItem) gekozen = ((ListItem) checkbox) .Selected; if (selectievakje is CheckBox) gekozen = ((CheckBox) checkbox) .Checked; if (geselecteerde) count ++; } Return count;}
U kunt de mededeling van de lijst _checkBoxes eigenlijk niet alleen vakjes bevatten. Het is een lijst van objecten, en kunnen CheckBox objecten bevatten, evenals ListItem objects.
This is om de validator in staat te stellen zowel CheckBox hanteren en CheckBoxList objects.You kan de getCheckBoxes () methode in het bijgevoegde bronbestand te vinden.
Er is een andere methode van de validator moet negeren: ControlPropertiesValid.The BaseValidator roept deze methode om te controleren of het onroerend goed ControlToValidate goed is ingesteld
beschermd override bool ControlPropertiesValid () {_controlToValidate = Page.FindControl (ControlToValidate. ); Bool isValid = _controlToValidate is CheckBox || _controlToValidate is CheckBoxList || _controlToValidate.
Controls.Count>