2010-12-12 10 views
0

私はバリデーションの概要を持ついくつかのバリデーションコントロールを持っています。 ユーザーが検証用のテキストボックスを終了した後、クライアント側の検証が表示されます。 サーバー側の検証結果が表示されません。 Validationsummaryは決して上がらないことを示しています。ValidationSummaryが表示されません

私は間違っていますか?

    <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); 
    } 

答えて

2

投稿したコードを確認することはできませんが、ページのIsValidプロパティはどこでも確認していますか?例えば。他の方法を実行する前に?

if (Page.IsValid){ 

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

このチェックでは、ページ上のすべての検証コントロールが強制的に実行され、検証エラーが表示されます。

EDIT:

あなたのマークアップで「登録」にValidationGroupを設定する必要が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>` 
+0

はい、あります。 linkRegister_Clickで。 – Kovu

+0

私はあなたの問題を見つけました - 私の上記の編集をご覧ください。 – 5arx

+0

完璧、うまく動作します、ありがとう。 – Kovu