1

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

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

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

4

0 回答 0