2009-12-11 95 views
0

我有一个复选框,它位于usercontrol中,usercontrol位于wizardcontrol中,wizardcontrol位于具有masterpage的内容页面上。向导控件验证问题中的usercontrol中的自定义验证器

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

现在一切工作正常与Firefox和当我测试它也与ie。但不知何故,其他人可能能够继续进行处理,而不必检查复选框。 该复选框也有一个togglebutton扩展器。我希望这不是问题。

我的内联JavaScript(在用户控件)

<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和切换按钮扩展

<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中删除客户端验证,但是当我只有服务器验证。它不起作用

回答

0

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

0

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

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

+0

因为我以前只有客户端。而且这在IE中似乎不起作用。因此我也添加了一个serverside。 – 2009-12-14 13:34:52

+0

而且,因为如果它对任何事情都是远程敏感的,你永远不应该信任客户端验证。如果客户有点创意,客户可以绕过它。客户端验证方便客户端。服务器端验证安全性。 – Mir 2013-03-15 20:30:52