2011-11-04 72 views
0

我已经创建了文本框自定义验证控件,我在我的aspx页面中使用了它,它的工作起来很好,找到长度意味着它是空的意味着它会正确验证 但现在想要增强这个,就像我想输入我的电子邮件ID那么第一个条件是,它不应该是空的,其次是它应该是格式[email protected]。 如果它是空的意味着我需要显示错误消息,如“请输入电子邮件ID!”如果不是以上格式,请显示'请输入正确的电子邮件地址!!'。文本框自定义验证

here is my code, 
TextboxCustomValidation.aspx 

namespace TextboxCustomValidator 
{ 
    public class TextboxCustomValidation : BaseValidator 
    { 

     protected override void OnPreRender(EventArgs e) 
     { 
      if (this.DetermineRenderUplevel() && this.EnableClientScript) 
      { 
       Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", "CheckTextboxvalid"); 
       this.CreateJavaScript(); 
      } 
      base.OnPreRender(e); 
     } 

     protected void CreateJavaScript() 
     { 
      StringBuilder sb = new StringBuilder(); 
      sb.Append(@"<script type=""text/javascript"">function CheckTextboxvalid(ctrl){"); 
      sb.Append(@"var txtlength = document.getElementById(document.getElementById(ctrl.id).controltovalidate);");   
      sb.Append(@"if(txtlength.value.length>2){"); 
      sb.Append(@"return true; }else"); 
      sb.Append(@" {return false;} "); 
      sb.Append(@"}</script>"); 
      Page.ClientScript.RegisterClientScriptBlock(GetType(), "JSScript", sb.ToString()); 
     } 

     protected override bool ControlPropertiesValid() 
     { 
      TextBox txt = FindControl(ControlToValidate) as TextBox; 
      return (txt != null); 
     } 

     protected override bool EvaluateIsValid() 
     { 
      return CheckTextboxIsValidorNot(); 
     } 

     protected bool CheckTextboxIsValidorNot() 
     { 
      TextBox txtControlName = (TextBox)FindControl(this.ControlToValidate); 
      if (txtControlName.Text.Length > 0) 
       return true; 
      else 
       return false; 
     } 

    } 
} 


**MyTextBoxValidation.aspx** 

<%@ Register TagPrefix="TCV" Namespace="TextboxCustomValidator" %> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     UserName : 
     <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
     <TCV:TextboxCustomValidation ControlToValidate="txtUserName" ErrorMessage="Please enter username !!" 
      EnableClientScript="true" runat="server"></TCV:TextboxCustomValidation> 
     <asp:TextBox ID="txtEmailId" runat="server"></asp:TextBox> 
     <TCV:TextboxCustomValidation ControlToValidate="txtEmailId" ErrorMessage="please enter txtEmailId!!" EnableClientScript="false" 
      runat="server"> 
     </TCV:TextboxCustomValidation> 
     <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="Save_Click" /> 
    </div> 
    </form> 
</body> 
</html> 

帮我, 任何回复手段将不胜感激。

回答

0

应该像这样

public bool ValidateMail(string mailAdress) 
{ 
    if (String.IsNullOrEmpty(mailAdress)) 
    { 
     ShowError("please enter email id!!"); 
     return false; 
    } 
    //The regular expression matches at: 
    //[anything][email protected][anything except "."]-.-[2 or 3 chars after the "."] 
    else if (!Regex.Match(mailAdress, @".+\@[^\.]+\..{2,3}") 
          .Length == mailAdress.Length) 
    { 
     ShowError("please enter correct email id!"); 
     return false; 
    } 
    return true 
}