protected override bool ControlPropertiesValid () {_controlToValidate = Page.FindControl (ControlToValidate. ); bool isValid = _controlToValidate es CheckBox || _controlToValidate es CheckBoxList || _controlToValidate.Controls.Count> 0; si (isValid) _checkBoxes = getCheckBoxes (); volver isValid;}
El CheckBoxValidator quiere la propiedad ControlToValidate para apuntar a un CheckBox, un CheckBoxList, o cualquier otro control que tiene por lo menos un control secundario
Por lo tanto, esto es todo lo que las necesidades CheckBoxValidator.
para trabajar en el lado del servidor.
Dos anulaciones mas nos permiten apalancar cliente-lado validation.They ambos incluyen un (EnableClient) condición si, por lo que podemos desactivar la validación del lado del cliente en tiempo de diseño, como que hacemos con otros validadores.
Me he registrado en dos personalizado (expando) atributos del primer atributo validator.The (evaluationfunction) permite el marco sé a qué función javascript para invocar para el lado del cliente validation.
The segunda (CheckedCount ) es una propiedad personalizada que almacena el recuento de casillas seleccionadas
protected override void AddAttributesToRender (escritor HtmlTextWriter) {base.AddAttributesToRender (escritor).; si (EnableClientScript) {Page.ClientScript.RegisterExpandoAttribute (this.ClientID "evaluationfunction", "CodeGolem_CheckBoxValidator", false); Page.ClientScript.RegisterExpandoAttribute (this.ClientID "CheckedCount", getCheckedCount () ToString (), falsa.
); }}
Por último, aquí está la función javascript, registrada en la página dentro del evento OnPreRender
protegida override void OnPreRender (EventArgs e) {base.OnPreRender (e).; si (EnableClientScript) {string onclick = string.Format ("si (this.checked) document.getElementById ('{0}') CheckedCount ++;.. lo demás document.getElementById ('{0}') CheckedCount--;", Identificación del cliente); foreach (casilla de verificación objeto en getCheckBoxes ()) {if (casilla está CheckBox) ((CheckBox) casilla de verificación) .Attributes.
Add ("onclick", onclick); si (casilla está ListItem) ((ListItem) casilla de verificación) .Attributes.Add ("onclick", onclick); } Page.ClientScript.RegisterClientScriptBlock (GetType (), "ValidationFunction", string.Format (@ "función CodeGolem_CheckBoxValidator (remitente) {{return sender.CheckedCount> = {0} && sender.CheckedCount}}", _minimumChecked, _maximumCh