ValidationSummary не отображается - PullRequest
       2

ValidationSummary не отображается

0 голосов
/ 12 декабря 2010

У меня есть несколько элементов управления валидацией с валидацией.Проверки на стороне клиента отображаются после того, как пользователь покидает текстовое поле для проверки.Проверка на стороне сервера никогда не появляется.Валидационная сумма никогда не появляется.

Что я делаю не так?

                    <div class="designPhotoMiddleText" id="MiddleReg" >
                <asp:Panel DefaultButton="linkRegister" runat="server" ID="panRegister" >
                    Jetzt kostenlos registrieren:<br />
                    <br />

                    <table>
                        <tr>
                            <td style="width: 120px;">
                                Username:
                            </td>
                            <td>
                                <asp:TextBox ID="txtRegisterUsername" Width="150px" runat="server"></asp:TextBox>
                                <asp:CustomValidator ValidationGroup="Register" ID="valUsername" ControlToValidate="txtRegisterUsername"
                                 OnServerValidate="IsUsernameFree" CssClass="validator"
                                 runat="server" ErrorMessage="CustomValidator"></asp:CustomValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Passwort:
                            </td>
                            <td>
                                <asp:TextBox ID="txtRegisterPW1" Width="150px" TextMode="Password" runat="server"></asp:TextBox>
                                <asp:RegularExpressionValidator ValidationGroup="Register" CssClass="validator" ControlToValidate="txtRegisterPW1" ID="valPasswordLenght" runat="server" ErrorMessage="Das Passwort muss mindestens 6 Zeichen haben."></asp:RegularExpressionValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Passwort erneut:
                            </td>
                            <td>
                                <asp:TextBox ID="txtRegisterPW2" Width="150px" TextMode="Password" runat="server"></asp:TextBox>
                                <asp:CompareValidator CssClass="validator" ValidationGroup="Register"
                                    ID="valPW"  ControlToCompare="txtRegisterPW2" ControlToValidate="txtRegisterPW1" runat="server" ErrorMessage="Die eingegebenen Passwörter stimmen nicht überein."></asp:CompareValidator>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Email:
                            </td>
                            <td>
                                <asp:TextBox ID="txtRegisterEmail" Width="150px" runat="server"></asp:TextBox>
                                <asp:RegularExpressionValidator ValidationGroup="Register" CssClass="validator" ForeColor="black" 
                                    ControlToValidate="txtRegisterEmail" ID="valMail" runat="server" 
                                    ValidationExpression=".*@.*\.(com|net|org|edu|mil|at?|de?|ch?|uk?)$" 
                                    ErrorMessage="Bitte geben Sie eine gültige EMail-Adresse ein." 
                                    Display="Dynamic"></asp:RegularExpressionValidator>
                            </td>
                        </tr>   
                        <tr>
                            <td>
                            </td>
                            <td>
                                <asp:CheckBox ID="chkRegsiterAGBs" runat="server" />
                                <asp:HyperLink ID="linkAGB" Target="_blank" NavigateUrl="~/AGBs.aspx" runat="server">AGBs</asp:HyperLink> gelesen
                                <asp:CustomValidator ValidationGroup="Register" ID="valAGB" 
                                 OnServerValidate="IsAGBChecked" CssClass="validator"
                                 runat="server" ErrorMessage="CustomValidator"></asp:CustomValidator>
                            </td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <asp:LinkButton CausesValidation="true" ID="linkRegister" CssClass="linkWhite" runat="server" 
                                    onclick="linkRegister_Click">Jetzt Registrieren</asp:LinkButton>
                                <asp:ValidationSummary ValidationGroup="Register" ID="sumRegister" runat="server" 
                                HeaderText="Fehler:"
                                ShowSummary="true" DisplayMode="BulletList" />
                            </td>
                        </tr>
                    </table>
                    </asp:Panel>
                </div>



    public void IsUsernameFree(object source, ServerValidateEventArgs value)
    {
        string username = value.Value;
        DAL.User user = DAL.UserHandling.GetUserByName(username);
        value.IsValid = (user == null);
    }

    public void IsAGBChecked(object source, ServerValidateEventArgs value)
    {
        value.IsValid = (chkRegsiterAGBs.Checked);
    }

1 Ответ

2 голосов
/ 12 декабря 2010

Не могу сказать наверняка, посмотрев код, который вы опубликовали, но проверяете ли вы свойство IsValid страницы?Например, перед запуском любых других методов?

if (Page.IsValid){

    //Do additional processing
    //register user etc.
}

эта проверка приведет к принудительному выполнению всех элементов управления проверкой на странице и затем должна вызвать отображение ошибок проверки.

РЕДАКТИРОВАТЬ:

Вам необходимо установитьValidationGroup для 'Register' в вашей разметке, которая определяет элемент управления linkRegister

`<asp:LinkButton CausesValidation="true" ID="linkRegister" CssClass="linkWhite" runat="server" OnClick="linkRegister_Click" ValidationGroup="Register">Jetzt Registrieren</asp:LinkButton>`

Кроме того, для вашего RegularExpressionValidator для пароля должно быть установлено свойство ValidationExpression в разметке:

`<asp:RegularExpressionValidator ValidationGroup="Register"
    CssClass="validator" ControlToValidate="txtRegisterPW1"
    ID="valPasswordLenght" runat="server" ErrorMessage="Das Passwort
    muss mindestens 6 Zeichen haben." Validationexpression="[\w+\d+]{6,}"
</asp:RegularExpressionValidator>`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...