use*_*832 5 c# asp.net validation webforms
我在ASP.NET页面中有一些部分需要单独验证它们.
每个部分都有自己的验证摘要部分,所以我考虑将ValidationSummary标记与ValidationGroup属性一起使用,但它不起作用.
以下代码有效,但验证页面中的所有控件:
<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" />
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server"
Display="None" ErrorMessage="mandatory 1" />
<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" />
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server"
Display="None" ErrorMessage="mandatory 2" />
....
<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" />
Run Code Online (Sandbox Code Playgroud)
虽然以下内容不起作用(无需进行任何验证,但在提交时我只需转到向导中的下一页):
<asp:TextBox ID="field1" runat="server" TabIndex="1" MaxLength="20" />
<asp:RequiredFieldValidator ID="field1RequiredValidator" ControlToValidate="field1" runat="server"
Display="None" ErrorMessage="mandatory 1" ValidationGroup="xxxx" />
<asp:TextBox ID="field2" runat="server" TabIndex="2" MaxLength="20" />
<asp:RequiredFieldValidator ID="field2RequiredValidator" ControlToValidate="field2" runat="server"
Display="None" ErrorMessage="mandatory 2" ValidationGroup="xxxx" />
....
<asp:ValidationSummary ID="validationSummary" HeaderText="Sumary" runat="server" ValidationGroup="xxxx" />
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?是否需要额外的设置或其他?
And*_*tad 15
ASP.NET中的默认行为是,当用户单击未ValidationGroup指定(并已CausesValidation设置为true)的按钮时,将验证不属于验证组的所有验证控件.
因此,要验证特定组,您需要设置ValidationGroup应该导致验证的按钮的属性(也可能是CausesValidation属性).
有关详细信息和示例,请参阅Button.ValidationGroup的MSDN文档.
编辑:如果您需要验证页面上的所有组,最简单的方法当然是根本不使用验证组.但是,如果您只想验证某些(但不止一个)组,可以通过调用以下命令在服务器上(在按钮的单击处理程序中)执行以下操作:
Validate("groupOne");
Validate("groupTwo");
// ...
Run Code Online (Sandbox Code Playgroud)
请注意,这不会触发客户端验证.有关在单击按钮上触发多个验证组的讨论,请参阅此帖子.
编辑:我发现了一篇博客文章,描述了如何为ASP.NET构建可重用的"多重验证组按钮",并附带代码.没试过,但看起来很有希望.