向导控制验证问题中usercontrol中的自定义验证器

时间:2009-12-11 10:58:16

标签: asp.net customvalidator

我有一个位于usercontrol中的复选框,usercontrol位于向导控件中,向导控件位于包含母版页的内容页面上。

在向导控件完成之前必须选中该复选框。复选框和customvalidator位于向导控件的最后一步。

现在一切正常,使用firefox,当我用ie测试它时。但不知何故,其他人可能无需检查复选框即可继续处理。 该复选框还有一个togglebutton扩展器。我希望这不是问题。

我的内联javascript(在usercontrol中)

<script language="javascript" type="text/javascript">
    // <![CDATA[
    function ValidateTandCs(source, args)
    {
        args.IsValid = document.getElementById('<%= cbAV.ClientID %>').checked;
    } 
    // ]]>
</script> 

复选框:

<asp:checkbox id="cbAV" runat="server"/>

customevalidator和togglebutton扩展程序

<asp:CustomValidator 
     ID="rfvAV" 
     Display="Dynamic" 
     runat="server" 
     ControlToValidate="cbAV" 
     ErrorMessage="RequiredFieldValidator" 
     ClientValidationFunction="ValidateTandCs" 
     onservervalidate="rfvAV_ServerValidate">
</asp:CustomValidator>
<ajaxToolkit:ToggleButtonExtender 
     ID="tbeav" 
     runat="server" 
     TargetControlID="cbAV" 
     ImageHeight="15" 
     ImageWidth="15" 
     CheckedImageUrl="~/images/checkbox-on.gif" 
     UncheckedImageUrl="~/images/checkbox-off.gif" />

customvalidator背后的代码

protected void rfvAV_ServerValidate(object source, ServerValidateEventArgs args)
{
    args.IsValid = (cbAV.Checked);
}

我试图从customvalidator中删除客户端验证,但是当我只有服务器验证时。它不起作用

2 个答案:

答案 0 :(得分:0)

为什么在客户端和服务器端都使用验证例程?

尝试删除您的ClientValidationFunction属性并保留OnServerValidate属性。

答案 1 :(得分:0)

发现了这个问题。这是javascript(clientside)在IE中不起作用。 服务器端验证,验证真的很好。但是当你点击向导控件的完成按钮时,它没有page.isvalid检查。所以它只是忽略了无效的验证器。我的坏。