CustomValidator消息不会显示

时间:2012-12-19 20:02:28

标签: c# asp.net

我有一个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表*时,但是错误消息没有显示出来。我尝试了所有自定义错误的显示选项,但没有运气。

2 个答案:

答案 0 :(得分:5)

我完全像你的问题那样接受了代码。

Display="None"中将Display="Dynamic"更改为asp:CustomValidator会导致出现星号。

ShowSummary="false"中将ShowSummary="true"更改为asp:ValidationSummary会导致错误消息显示在摘要中。

答案 1 :(得分:1)

如果服务器未处理验证手动,则将Display更改为"Dynamic"或其他任何内容都无法执行任何操作,尤其是在使用<asp:CustomValidator时。即使是ValidationGroup,有或没有ValidationSummary也无效。

始终强制验证服务器之前允许用户退出表单/ 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()将强制验证控件检查并显示错误消息。