我正在尝试验证两个复选框。为了使表格有效,必须检查其中之一。我想使用CustomValidator控件,并在服务器上进行验证。
(此.ascx页是在另一个.aspx页上显示的表单。)
首先,我在.ascx页面上放入复选框和CustomValidator控件。像这样:

<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>
然后,在.ascx.cs页面的代码隐藏中添加了validateCheckBoxes_ServerValidate函数,如下所示:
            protected void validateCheckBoxes_ServerValidate(object source, ServerValidateEventArgs args)
        {
            if (!EmailCourse.Checked && !SpecialReport.Checked)
                args.IsValid = false;
            else
                args.IsValid = true;

    }
当我尝试在本地站点上打开使用此表单的页面以查看其外观时,出现如下错误:

说明:编译服务于此请求所需的资源期间发生错误。请查看以下特定的错误详细信息,并适当地修改您的源代码。
编译器错误消息:CS1061:'ASP.common_controls_specialreportform_ascx'不包含'validateCheckBoxes_ServerValidate'的定义,并且没有扩展方法'validateCheckBoxes_ServerValidate'接受类型的第一个参数
可以找到“ASP.common_controls_specialreportform_ascx”(您是否缺少using指令或程序集引用?)

和:

错误CS1061:“ASP.common_controls_specialreportform_ascx”不包含“validateCheckBoxes_ServerValidate”的定义,并且找不到扩展方法“validateCheckBoxes_ServerValidate”接受类型为“ASP.common_controls_specialreportform_ascx”的第一个参数(是否缺少使用的指令或程序集? )

有谁知道这个错误的原因是什么?我是asp.net的新手,遇到了麻烦。
谢谢!

最佳答案

您应该将validateCheckBoxes_ServerValidate放在* .ascx.cs中,当它位于您的aspx.cs上时。
在ascx.cs上,您不能像这样引用位于Parent上的控件。

将此代码放入ur aspx.cs文件:

protected void validateCheckBoxes_ServerValidate(object source, ServerValidateEventArgs args)
{
        if (!EmailCourse.Checked && !SpecialReport.Checked)
            args.IsValid = false;
        else
            args.IsValid = true;

}

编辑:

您在ascx上的自定义验证器应如下所示:
<asp:CustomValidator id="CustomValidator1" runat="server" ErrorMessage="No checkbox  checked" ControlToValidate="EmailCourse" OnServerValidate="validateCheckBoxes_ServerValidate"/>

如果没有此ControlToValidate属性服务器,则不知道您要验证哪个控件。

编辑2:

您是否尝试将<input type="checkbox"/>更改为<asp:CheckBox />
并告诉我在btn单击后或选中/取消选中复选框后应如何验证?

编辑3:

检查您的.ascx.designer.cs EmailCourse是否具有正确的Type。

编辑4:

当您在<asp:CheckBox .../>文件中包含*.ascx时,您应该在ascx.designer.cs中包含
这种protected global::System.Web.UI.WebControls.CheckBox EmailCourse
请让我知道是否有帮助。

关于asp.net - 验证复选框asp.net C#,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11080251/

10-12 03:56
查看更多