我正在使用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,则页面返回服务器并且没有任何验证。
答案 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"