Validera CheckBox med CustomValidator

Försökte att lägga till en RequiredFieldValidator för att kontrollera att en CheckBox var ikryssad vid postning, men det gick inte så bra. Felet blev:

Control 'CheckBox1' referenced by the ControlToValidate property of
'RequiredFieldValidator1' cannot be validated.

Någonstans läste jag att man inte lagt till denna möjlighet på CheckBox för att "bägge värdena alltid är riktiga". Det kanske kan vara ett bra argument, men jag ville endå ha denna funktionelitet. I mitt fall gällde det en ruta som användaren måste kryssa i för att fortsätta.

Så jag gjorde det med en CustomValidator istället, så här ser uppmärkningen ut på sidan.

<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
<br />
<asp:CustomValidator ClientValidationFunction="ValidateChecked"
Runat="server" ID="termsReadUnchecked" ErrorMessage="You must tick this box to continue"/>

Och i koden bakom lägger jag till JavaScript-funktionen för valideringen.

HtmlGenericControl validateCheckedScript = new HtmlGenericControl("script");
validateCheckedScript.Attributes.Add("type", "text/javascript");
validateCheckedScript.InnerHtml = "function ValidateChecked(src, args){args.IsValid=document.getElementById(\"" + ChckBox1.ClientID + "\").checked;}";
this.Page.Header.Controls.Add(validateCheckedScript);

By Jesper Lind
1