Сводка проверки не отображает ошибки в правильном месте

У меня есть две группы на моей странице входа в систему, login а также createUser, У меня есть два резюме проверки, loginSum а также createSum, У меня есть обязательное поле проверки на каждом элементе управления. Если я нажму Login или же Create Кнопка без обязательного поля со значениями, ошибки появятся под полем, а не в сводке.

Код логина:

<div id="login" class="settings">
asp:Label ID="lblInvalid" runat="server" Visible="false" Display="Static">
        YOUR EMAIL OR PASSWORD WERE NOT FOUND. PLEASE REVIEW YOUR INFORMATION AND TRY AGAIN.<br /></asp:Label>
    <asp:Label ID="Label1" runat="server" Text="Email:" Width="100px" />
    <asp:TextBox ID="user" runat="server" /><br />
    <%-- validation for user login email --%>
    <asp:RegularExpressionValidator ID="validEmail"
        ControlToValidate="user"
        ValidationExpression="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
        Display="Static"
        ValidationGroup="login"
        ErrorMessage="Email"
        SetFocusOnError="true"
        runat="server" 
        Text="*" /><br />
    <asp:Label ID="Label2" runat="server" Text="Password:" Width="100px" />
    <asp:TextBox ID="password" TextMode="password" runat="server" /><br />
    <%-- validation for user login password --%>
    <asp:RequiredFieldValidator ID="passReq"
        runat="server"
        ControlToValidate="password"
        ValidationGroup="login"
        ErrorMessage="Password"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Button ID="submit" runat="server" Text="Login" OnClick="login_Click"
        ValidationGroup="login" CausesValidation="true" /><br />
    <asp:ValidationSummary ID="loginSum"
        DisplayMode="BulletList"
        EnableClientScript="true"
        ShowSummary="true"
        HeaderText="You must enter a valid value for the following fields:"
        runat="server" />
</div>

Создать код:

<div id="create_account" class="settings">
    <asp:Label ID="Label10" runat="server" Text="Name:" Width="100px" />
    <asp:TextBox ID="txtName" runat="server" /><br />
    <%-- validation for new user --%>
    <asp:RequiredFieldValidator ID="nameReq"
        runat="server"
        ControlToValidate="txtName"
        ValidationGroup="createUser"
        ErrorMessage="You must put in a name!"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="Label3" runat="server" Text="Email Address:" Width="100px" />
    <asp:TextBox ID="txtNewUser" runat="server" /><br />
    <%-- validation for new email --%>
    <asp:RequiredFieldValidator ID="newUserReq"
        runat="server"
        ControlToValidate="txtNewUser"
        ValidationExpression="[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?"
        ValidationGroup="createUser"
        ErrorMessage="Email address"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="Label4" runat="server" Text="Password:" Width="100px" />
    <asp:TextBox ID="txtNewPass" TextMode="password" runat="server" /><br />
    <%-- validation for new password --%>
    <asp:RequiredFieldValidator ID="newPassReq"
        runat="server"
        ControlToValidate="txtNewPass"
        ValidationGroup="createUser"
        ErrorMessage="Password"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="Label5" runat="server" Text="Confirm Password:" Width="100px" />
    <asp:TextBox ID="txtConfirmPass" TextMode="password" runat="server" /><br />
    <%-- validation for confirm password --%>
    <asp:RequiredFieldValidator ID="confirmPassReq"
        runat="server"
        ControlToValidate="txtConfirmPass"
        ValidationGroup="createUser"
        ErrorMessage="Confirm password"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:CompareValidator ID="ComparePass" runat="server"
        ControlToValidate="txtConfirmPass"
        CssClass="ValidationError"
        ControlToCompare="txtNewPass"
        ErrorMessage="The passwords you entered must match" /><br />
    <asp:Label ID="label" Text="Address:" runat="server" Width="100px" />
    <asp:TextBox ID="txtAddress" TextMode="multiline" Columns="22" Rows="3" runat="server" /><br />
    <%-- validation for new user --%>
    <asp:RequiredFieldValidator ID="addressReq"
        runat="server"
        ControlToValidate="txtAddress"
        ValidationGroup="createUser"
        ErrorMessage="Address"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="label6" Text="City:" runat="server" Width="100px" />
    <asp:TextBox ID="txtCity" runat="server" /><br />
    <%-- validation for new user --%>
    <asp:RequiredFieldValidator ID="cityReq"
        runat="server"
        ControlToValidate="txtCity"
        ValidationGroup="createUser"
        ErrorMessage="City"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="label7" Text="State:" runat="server" Width="100px" />
    <asp:TextBox ID="txtState" runat="server" /><br />
    <%-- validation for new user --%>
    <asp:RequiredFieldValidator ID="stateReq"
        runat="server"
        ControlToValidate="txtState"
        ValidationGroup="createUser"
        ErrorMessage="State (abbreviation)"
        ValidationExpression="[a-zA-Z]{2}"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="label8" Text="Zip Code:" runat="server" Width="100px" />
    <asp:TextBox ID="txtZip" runat="server" /><br />
    <%-- validation for new user --%>
    <asp:RequiredFieldValidator ID="zipReq"
        runat="server"
        ControlToValidate="txtZip"
        ValidationGroup="createUser"
        ErrorMessage="Zip code"
        ValidationExpression="[a-zA-Z]{9}"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Label ID="label9" Text="Phone Number:" runat="server" Width="100px" />
    <asp:TextBox ID="txtPhone" runat="server" /><br />
    <%-- validation for new user --%>
    <asp:RequiredFieldValidator ID="phoneReq"
        runat="server"
        ControlToValidate="txtPhone"
        ValidationGroup="createUser"
        ErrorMessage="Phone number"
        ValidationExpression="[a-zA-Z]{15}"
        SetFocusOnError="true" Display="Static" 
        Text="*" /><br />
    <asp:Button ID="create" runat="server"
        Text="Create Account" OnClick="create_Click"
        ValidationGroup="createUser" CausesValidation="true" /><br />
    <br />
    <asp:ValidationSummary ID="createSum"
        DisplayMode="BulletList"
        ShowSummary="true"
        EnableClientScript="true"
        HeaderText="You must enter a valid value for the following fields:"
        runat="server" />
</div>

Может кто-нибудь помочь мне или направить меня к эффективному учебнику? Все, что я сейчас получаю, это "*" ниже всего, и если я уберу Text="*" тогда он просто отображает ErrorMessage="_____" ниже каждого связанного элемента управления, а не в Сводке проверки, как это должно быть.

1 ответ

Решение

Вам нужно будет добавить свойства группы валидации для всех валидаторов и обеих сводок, а также для кнопок (каждая кнопка будет проверять только одну группу), т.е.

ValidationGroup="logingroup"
ValidationGroup="creategroup"

Пожалуйста, смотрите ( ^)

Другие вопросы по тегам