2011-11-04 71 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 
}