另一个“我很确定我知道答案,但无论如何我都会问以防万一”问题 (答案我认为是“不,没有”)
是否有任何内置方法可以在ASP.NET(.Net 4.0)中链接验证器而无需编写<asp:CustomValidator>
代码?如果另一个验证器已通过验证,那么只检查一个验证器?
例如,假设您有两个<asp:DropDownList>
控件,两者都具有完全相同的选项,包括一开始的“空白”条目(因为您不需要预先选择任何内容,这是一个决定用户必须有意识地做出... ...
<asp:DropDownList runat="server" id="dd1">
<asp:ListItem Value="-1" Text=""/>
<asp:ListItem Value="1">One</ListItem>
<asp:ListItem Value="2">Two</ListItem>
...
</asp:DropDownList>
<asp:DropDownList runat="server" id="dd2">
... with identical list of items as dd1
我会设置两个<asp:CompareValidator>
控件,其中一个与上述<asp:DropDownList>
个控件相关联
<asp:CompareValidator runat="server" id="val1" ControlToValidate="dd1"
ValueToCompare="-1" Operation="Not Equal" ErrorMessage="Select DD1" />
<asp:CompareValidator runat="server" id="val2" ControlToValidate="dd2"
ValueToCompare="-1" Operation="Not Equal" ErrorMessage="Select DD2" />
这些工作正常,如果原始“空白”条目是所选项目,则会显示相应的错误。
但是,我需要两个项目不同,所以我添加了另一个<asp:CompareValidator>
...
<asp:CompareValidator runat="server" id="val3" ControlToValidate="dd1"
ControlToCompare="dd2" Operation="Not Equal" ErrorMessage="DD2 must be different to DD1" />
这样做的结果是,如果DD1
和DD2
都将“空白”作为所选项目,则所有三个验证程序都将触发表单提交。这是不正确的,因为val3
只应在成功验证val2
的情况下进行验证。
显而易见的解决方案是使用<asp:CustomValidator>
代替,并自己处理情况......但我想我会问是否有内置的方法使val3
仅验证val2
有效。