在ASP.net中使用自定义验证器

时间:2012-01-11 00:43:44

标签: asp.net customvalidator

我正在使用ASP.net自定义验证器验证邮件是否存在于数据库中,所以我有一个服务器端bool函数

public void isUnique(object source, ServerValidateEventArgs args)
{
    args.IsValid = Formatters.FormatUser.AlternateMailUnique(_txtAlternateEmail.Text);    
}

以及验证文本框_txtAlternateEmail

的自定义验证程序
<asp:TextBox ID="_txtAlternateEmail" runat="server" onkeypress="typetext();" onmouseout="textclear();"></asp:TextBox>
                        <asp:CustomValidator runat="server" id="cusCustom" controltovalidate="_txtAlternateEmail"  OnServerValidate="isUnique"  errormessage="Mail already exists" ValidationGroup="savechanges"/>

同时验证器不作为.net验证器行为,我的意思是如果函数isUnique返回false,则页面返回服务器并且没有任何验证。

2 个答案:

答案 0 :(得分:1)

您需要使用Page.IsValid属性 - 此属性表示页面验证成功与否。

除了isUnique()处理程序之外,您还需要在按钮的单击处理程序或其他要执行操作的句柄中验证Page.IsValid的值。

例如,

protected void Button1_Click(object sender, EventArgs e)
  {
    if (Page.IsValid)
    {
      //your actions
     }
  }

PS:如果清除onmouseout="textclear()"的内容,则删除JavaScript属性_txtAlternateEmail

答案 1 :(得分:0)

看起来您没有将服务器验证放在标记中。 尝试添加:

OnServerValidate="isUnique"