场景:我正在尝试在一个页面上插入一个团队(由多个人组成)。我有一个Web用户控件来插入每个人,当一个团队有多个人时,会同时显示几个Web用户控件。
每个用户都有一个ValidationSummary和几个验证器(All分组到同一个验证组,示例person1 Web用户控件在验证摘要上有验证组,每个验证器设置为“valGroup_Person1”)。
问题在于验证发生时所有错误都被分组并显示在所有Web用户控件中,使每个Web用户控件显示一个非常长的错误列表。预期的是个别错误列表。
有没有办法让ValidationSummary以这种方式执行?
答案 0 :(得分:6)
如果您使用的是asp.net 2.0,那么您必须使用验证组,这将有效。
请参阅下面的示例,它将起作用
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator"
ValidationGroup="1">1</asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server"
ControlToValidate="TextBox2" ErrorMessage="RequiredFieldValidator2"
ValidationGroup="2">2</asp:RequiredFieldValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
ValidationGroup="1" />
<asp:ValidationSummary ID="ValidationSummary2" runat="server"
ValidationGroup="2" />
<asp:Button ID="Button1" runat="server" Text="Button" ValidationGroup="1" />
<asp:Button ID="Button2" runat="server" Text="Button" ValidationGroup="2" />
答案 1 :(得分:0)
您必须通过在每个控件上为它们指定单独的名称来消除验证组的歧义。例如,在用户控件的page-init:
中Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Dim uniqueGroupName = Guid.NewGuid.ToString
valSummary.ValidationGroup = uniqueGroupName
txtFirstName.ValidationGroup = uniqueGroupName
txtLastName.ValidationGroup = uniqueGroupName
btnFind.ValidationGroup = uniqueGroupName
End Sub
(对于组中的每个控件,以编程方式为其提供验证组)
如果您正在进行服务器端验证,则应仅为该组调用验证,例如
Page.Validate(valSummary.ValidationGroup)
If Not Page.IsValid then Exit Sub
...