非常感谢您花时间阅读本文。我有一个问题,我在从代码隐藏页面加载时为 ASP.NET 页面设置默认按钮,但现在我有多个验证组针对一个控件,它不再有效。现在,当我在该控件(文本框)中按下 Enter 时,会触发两个组的验证减去验证摘要文本。
这是我的示例代码:
ASPX
<table>
<tr>
<td><asp:Textbox runat="server" ID="validateMe"></asp:TextBox></td>
<td><asp:RequiredFieldValidator ID="firstValidator" runat="server" ErrorMessage="First check not valid" Text="*" ControlToValidate="validateMe" ValidationGroup="firstGroup"></asp:RequiredFieldValidator>
<td><asp:RequiredFieldValidator ID="secondValidator" runat="server" ErrorMessage="Second check not valid" Text="*" ControlToValidate="validateMe" ValidationGroup="secondGroup"></asp:RequiredFieldValidator>
</tr>
<tr>
<td><asp:Button runat="server" ID="firstButton" Text="V1" ValidationGroup="firstGroup"/></td>
<td><asp:Button runat="server" ID="secondButton" Text="V2" ValidationGroup="secondGroup"/></td>
</tr>
<table>
<asp:ValidationSummary ID="firstSummary" runat="server" ValidationGroup="firstGroup"/>
<asp:ValidationSummary ID="secondSummary" runat="server" ValidationGroup="secondGroup"/>
C#
protected void Page_Load(object sender, EventArgs e)
{
this.Form.DefaultButton = firstButton.UniqueID;
}
如果我使用它并在文本框内按下“Enter”键而没有输入任何内容,那么验证摘要都不会出现,但我会在文本框旁边有两个星号(每个星号代表一个组)。如果用户按下“Enter”,我希望仅使用应该分配给 DefaultButton(此处为“firstButton”)的第一组进行完整验证。有没有什么方法可以实现此功能并启动客户端验证,如果用户单击“firstButton”而不是会发生这种情况?
我也曾尝试将整个表格和验证摘要包装在 asp:Panel 中并在那里设置 DefaultButton,但我收到了相同的结果。任何正确方向的帮助或指示将不胜感激!
最佳答案
设置
EnableClientScript="false"
在 RequiredFieldValidator 控件中。这会有所帮助。
<asp:Panel runat="server" DefaultButton="secondButton">
<table>
<tr>
<td>
<asp:TextBox runat="server" ID="validateMe"></asp:TextBox></td>
<td>
<asp:RequiredFieldValidator ID="firstValidator" runat="server" ErrorMessage="First check not valid" Text="*" ControlToValidate="validateMe" EnableClientScript="false" ValidationGroup="firstGroup"></asp:RequiredFieldValidator>
</td>
<td>
<asp:RequiredFieldValidator ID="secondValidator" runat="server" ErrorMessage="Second check not valid" Text="*" ControlToValidate="validateMe" EnableClientScript="false" ValidationGroup="secondGroup"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Button runat="server" ID="firstButton" Text="V1" ValidationGroup="firstGroup" /></td>
<td>
<asp:Button runat="server" ID="secondButton" Text="V2" ValidationGroup="secondGroup" /></td>
</tr>
</table>
<asp:ValidationSummary ID="firstSummary" runat="server" ValidationGroup="firstGroup" />
<asp:ValidationSummary ID="secondSummary" runat="server" ValidationGroup="secondGroup" />
</asp:Panel>
关于c# - 默认按钮不适用于多个验证组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152482/