验证控制链

时间:2013-11-05 13:11:19

标签: asp.net validation .net-4.0

另一个“我很确定我知道答案,但无论如何我都会问以防万一”问题 (答案我认为是“不,没有”)

是否有任何内置方法可以在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" />

这样做的结果是,如果DD1DD2都将“空白”作为所选项目,则所有三个验证程序都将触发表单提交。这是不正确的,因为val3只应在成功验证val2的情况下进行验证。

显而易见的解决方案是使用<asp:CustomValidator>代替,并自己处理情况......但我想我会问是否有内置的方法使val3仅验证val2有效。

0 个答案:

没有答案