默认按钮不适用于多个验证组

时间:2013-11-22 19:00:32

标签: c# asp.net validation defaultbutton

非常感谢您花时间阅读本文。我有一个问题,我在代码隐藏的页面加载时为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,但我收到了相同的结果。任何有关正确方向的帮助或指示都将不胜感激!

1 个答案:

答案 0 :(得分:1)

设置

  

EnableClientScript = “假”

在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>