I am trying to validate two checkboxes. One of them must be checked in order for the form to be valid. I would like to use a CustomValidator control, and validate on the server.
(This .ascx page is a form that is displayed on a different .aspx page.)
First I put in the checkboxes and a CustomValidator control on my .ascx page. Like this:
<tr>
<td colspan="3">
<input type="checkbox" runat="server" name="EmailCourse" class="" id="EmailCourse" value="" />
Email course
<asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage="No checkbox checked"
OnServerValidate="validateCheckBoxes_ServerValidate">
</asp:CustomValidator>
</td>
</tr>
<tr>
<td colspan="3">
<input type="checkbox" runat="server" name="SpecialReport" class="" id="SpecialReport" value="" />
Special report
</td>
</tr>
Then, I added the validateCheckBoxes_ServerValidate function in the code-behind, on the .ascx.cs page, like this:
protected void validateCheckBoxes_ServerValidate(object source, ServerValidateEventArgs args)
{
if (!EmailCourse.Checked && !SpecialReport.Checked)
args.IsValid = false;
else
args.IsValid = true;
}
When I try to open the page that uses this form on my local site to see what it looks like, I get an error, like this:
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1061: ‘ASP.common_controls_specialreportform_ascx’ does not contain a definition for ‘validateCheckBoxes_ServerValidate’ and no extension method ‘validateCheckBoxes_ServerValidate’ accepting a first argument of type
‘ASP.common_controls_specialreportform_ascx’ could be found (are you missing a using directive or an assembly reference?)
And:
error CS1061: ‘ASP.common_controls_specialreportform_ascx’ does not contain a definition for ‘validateCheckBoxes_ServerValidate’ and no extension method ‘validateCheckBoxes_ServerValidate’ accepting a first argument of type ‘ASP.common_controls_specialreportform_ascx’ could be found (are you missing a using directive or an assembly reference?)
Does anyone know what the cause of this error is? I’m new at asp.net and am having trouble with this.
Thanks!
OK. So here’s what worked:
As harry180 suggested, I did need to switch the input-type=”CheckBox” to asp:CheckBox.
This triggered a run-time error, which I commented about above. The run-time error was because I had not recompiled the solution after making the change, in order that the ascs.designer.cs file be modified.
After recompiling, the code works.