6

CustomValidatorを使用して、可能なすべてのパラメーターを定義しました。

<asp:CustomValidator ID="custom" runat="server" Text="*" ErrorMessage="This email address is already registered" ControlToValidate="txtEmail" OnServerValidate="isExist" Display="None" ValidationGroup="valRegister"></asp:CustomValidator>

PS:同じテキストボックスにRequiredFieldValidatorがあり、空の値を確認したくありません。

フォームの他のオブジェクトは次のとおりです。

<div class="row"><asp:Label runat="server" Text="Email" AssociatedControlID="txtEmail"></asp:Label><asp:RequiredFieldValidator runat="server" ErrorMessage="Please enter your email" Text="*" ControlToValidate="txtEmail"></asp:RequiredFieldValidator><asp:TextBox ID="txtEmail" runat="server" CssClass="inpBox"></asp:TextBox></div>

<asp:Button runat="server" Text="Register" CssClass="btn" OnClick="register_member" CausesValidation="true" ValidationGroup="valRegister" />

<asp:ValidationSummary ID="validationSummary" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="valRegister" />

protected void isExist(object sender, ServerValidateEventArgs args){
if (cre.member.isExist(args.Value)){
    args.IsValid = false;
} else {
    args.IsValid = true;
}

}

dbテーブルにすでに存在するメールを入力すると*フォームに表示されますが、エラーメッセージが表示されません。カスタムエラーのすべての表示オプションを試しましたが、うまくいきませんでした。

4

2 に答える 2

5

私はあなたの質問とまったく同じようにコードを取りました。

原因をに変更Display="None"すると、アスタリスクが表示されます。Display="Dynamic"asp:CustomValidator

をに変更ShowSummary="false"するとShowSummary="true"asp:ValidationSummaryエラーメッセージが概要に表示されます。

于 2012-12-19T20:14:10.883 に答える
1

サーバーが検証を手動で処理していない場合、特にを使用している場合は、に変更しDisplay"Dynamic"も実際には何も起こりません。の有無にかかわらず、何もしません。<asp:CustomValidatorValidationGroupValidationSummary

ユーザーがform/gridview / etcを終了できるようにするに、必ずサーバーで検証を強制してください。

すなわち

            ...your form here...
             <tr>
                <td colspan="3" style="text-align: center" valign="top">
                    <asp:Button ID="ButtonSubmit" runat="server" Text="Submit" OnClick="Submit_Click" CausesValidation="true"  />
                    <asp:Button ID="ButtonCancel" runat="server" Text="Cancel" OnClick="Cancel_Click" CausesValidation="false"  />
                </td>
            </tr>
        </table>
    </asp:Panel>

...
    protected void Submit_Click(object sender, EventArgs e)
    {
        Page.Validate();
        if (Page.IsValid)
        {
           //processing done after a successful submit here!
        }
    }

Page.Validate()、検証コントロールにエラーメッセージをチェックして表示するように強制します。

于 2016-01-21T03:16:34.477 に答える