拼吾爱程序人生.Net编程Asp.Net 实现一个自定义验证器控件[序]

1  /  1  页   1 跳转 查看:803

实现一个自定义验证器控件[序]

实现一个自定义验证器控件[序]

文/jigee  出处/博客园

昨天发布的还有点小问题,刚才抽时间进行了修改,先发布出来:

 附件: 您所在的用户组无法下载或查看附件

提供的外部属性:

 附件: 您所在的用户组无法下载或查看附件

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [Asp.Net] 的这些文章也感兴趣:

ASP.NET Mvc Preview 5 演示Demo #2 实现Membership角色权限控制
AddNew Method Example
ASP.NET与ASP的不同
名称地址(Namespace)
Asp.Net 2.0为用户控件添加事件(Event)
ASP.NET MVC,深入浅出IModelBinder,在Post方式下慎用HtmlHelper
DataGrid中嵌套使用Repeater
数据库连接字在Web.config里的用法
.NET框架中基于角色的安全性(2)
.NET框架中基于角色的安全性(1)
 

回复:实现一个自定义验证器控件[序]

实现代码:


引用:
using System;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Kim.AspNet.Validatator.Controls
{
    [
    AspNetHostingPermission(SecurityAction.Demand,
        Level = AspNetHostingPermissionLevel.Minimal),
    AspNetHostingPermission(SecurityAction.InheritanceDemand,
        Level = AspNetHostingPermissionLevel.Minimal),
    DefaultEvent("ValidTextBoxChanged"),
    DefaultProperty("Text"),
    ToolboxData("<{0}:ValidTextBox runat=\"server\"> </{0}:ValidTextBox>"),
    ]
    public class ValidTextBox : CompositeControl
    {
        //Contact Ways
        private DropDownList validType;
        //User Enter Values
        private TextBox validTextBox;
   
        //valid user enter values
        //can not empty
        private RequiredFieldValidator emailValidator;
        private RequiredFieldValidator handphoneValidator;
        private RequiredFieldValidator phoneValidator;

        //have the right format
        private RegularExpressionValidator emilFormatValidator;
        private RegularExpressionValidator handphoneFormatValidator;
        private RegularExpressionValidator phoneFormatValidator;

        private static readonly object EventValidKey =
            new object();
     
        // get TextBox value
      [
      Bindable(true),
      Category("Appearance"),
      DefaultValue(""),
      Description("get value from textbox")
      ]
        public string TextValue
        {
            get
            {
                EnsureChildControls();
                return validTextBox.Text;
            }
            set
            {
                EnsureChildControls();
                validTextBox.Text = value;
               
            }
        }
     
        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("Error message for the phone validator.")
        ]
        public string RequirePhoneNumber
        {
            get
            {
                EnsureChildControls();
                return phoneValidator.ErrorMessage;
            }
            set
            {
                EnsureChildControls();
                phoneValidator.ErrorMessage = value;             
            }
        }

        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("Error message for the phone validator.")
        ]
        public string PhoneNumberFormat
        {
            get
            {
                EnsureChildControls();
                return phoneFormatValidator.ErrorMessage;
            }
            set
            {
                EnsureChildControls();
                phoneFormatValidator.ErrorMessage = value;             
            }
        }



        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("Error message for the hand phone validator.")
        ]
        public string RequireHandPhoneNumber
        {
            get
            {
                EnsureChildControls();
                return handphoneValidator.ErrorMessage;
            }
            set
            {
                EnsureChildControls();
                handphoneValidator.ErrorMessage = value;             
            }
        }

        [
      Bindable(true),
      Category("Appearance"),
      DefaultValue(""),
      Description("Error message for the hand phone validator.")
      ]
        public string HandPhoneNumberFormat
        {
            get
            {
                EnsureChildControls();
                return handphoneFormatValidator.ErrorMessage;
            }
            set
            {
                EnsureChildControls();
                handphoneFormatValidator.ErrorMessage = value;
            }
        }

     
        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue(""),
        Description("Error message for the e-mail validator.")
        ]
        public string RequireEmailAddress
        {
            get
            {
                EnsureChildControls();
                return emailValidator.ErrorMessage;
            }
            set
            {
                EnsureChildControls();
                emailValidator.ErrorMessage = value;               
            }
        }

        [
      Bindable(true),
      Category("Appearance"),
      DefaultValue(""),
      Description("Error message for the e-mail validator.")
      ]
        public string EmailAddressFormat
        {
            get
            {
                EnsureChildControls();
                return emilFormatValidator.ErrorMessage;
            }
            set
            {
                EnsureChildControls();
                emilFormatValidator.ErrorMessage = value;
            }
        }


        // The Valid event.
        [
        Category("Action"),
        Description("Raised when the user input the value.")
        ]
        public event EventHandler ValidTextBoxChanged
        {
            add
            {
                Events.AddHandler(EventValidKey, value);
            }
            remove
            {
                Events.RemoveHandler(EventValidKey, value);
            }
        }


        protected virtual void OnValidTextBoxChanged(EventArgs e)
        {
            EventHandler TextBoxChangedHandler =
                (EventHandler)Events[EventValidKey];
            if (TextBoxChangedHandler != null)
            {
                TextBoxChangedHandler(this, e);
            }
        }
     

        private void _TextBox_Changed(object source, EventArgs e)
        {
            OnValidTextBoxChanged(EventArgs.Empty);
        }

        protected override void RecreateChildControls()
        {
            EnsureChildControls();
        }


        protected override void CreateChildControls()
        {
            Controls.Clear();

            ListItem list;
            validType = new DropDownList();
            validType.ID = "validDrpList";       

            list = new ListItem();
            list.Text = "电话";
            list.Value = "0";
            validType.Items.Add(list);
         
            list = new ListItem();
            list.Text = "邮件";
            list.Value = "1";
            validType.Items.Add(list);

            list = new ListItem();
            list.Text = "手机";
            list.Value = "2";
            validType.Items.Add(list);

            validTextBox = new TextBox();
            validTextBox.ID = "validTextBox";
            validTextBox.Width = Unit.Pixel(100);
            //phone valid

           
            phoneValidator = new RequiredFieldValidator();
            phoneValidator.ID = "phoneValidator";
            phoneValidator.ControlToValidate = validTextBox.ID;
            phoneValidator.Display = ValidatorDisplay.Dynamic;


            phoneFormatValidator = new RegularExpressionValidator();
            phoneFormatValidator.ID = "phoneFormatValidation";       
            phoneFormatValidator.Display = ValidatorDisplay.Dynamic;           
            phoneFormatValidator.ControlToValidate = validTextBox.ID;
            phoneFormatValidator.ValidationExpression = @"(0\d{2}-\d{8}|0\d{3}-\d{7})-\d{2,4}|(0\d{2}-\d{8}|0\d{3}-\d{7})";
           
            //email valid
         
          emailValidator = new RequiredFieldValidator();
          emailValidator.ID = "emailValidator";
          emailValidator.ControlToValidate =
              validTextBox.ID;       
          emailValidator.Display = ValidatorDisplay.Dynamic;

          emilFormatValidator = new RegularExpressionValidator();
          emilFormatValidator.ID = "emailFormatValidation";       
          emilFormatValidator.Display = ValidatorDisplay.Dynamic;           
          emilFormatValidator.ControlToValidate = validTextBox.ID;
          emilFormatValidator.ValidationExpression = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";           
         
            //handphone valid
     
          handphoneValidator = new RequiredFieldValidator();
          handphoneValidator.ID = "handphoneValidator";
          handphoneValidator.ControlToValidate =
              validTextBox.ID;       
          handphoneValidator.Display = ValidatorDisplay.Dynamic;

          handphoneFormatValidator = new RegularExpressionValidator();
          handphoneFormatValidator.ID = "handphoneValidation";       
          handphoneFormatValidator.Display = ValidatorDisplay.Dynamic;           
          handphoneFormatValidator.ControlToValidate = validTextBox.ID;
          handphoneFormatValidator.ValidationExpression = @"^1[3,5][0-9][0-9]{8}$";
             
            validTextBox.TextChanged += new EventHandler(_TextBox_Changed);
            validType.AutoPostBack = true;

            this.Controls.Add(validType);
            this.Controls.Add(validTextBox);

            this.Controls.Add(phoneValidator);
            this.Controls.Add(phoneFormatValidator);

            this.Controls.Add(emailValidator);
            this.Controls.Add(emilFormatValidator);

            this.Controls.Add(handphoneValidator);
            this.Controls.Add(handphoneFormatValidator);
        }

        protected override void Render(HtmlTextWriter writer)
        {
            AddAttributesToRender(writer);
            writer.AddAttribute(
                HtmlTextWriterAttribute.Cellpadding,
                "1", false);
            writer.RenderBeginTag(HtmlTextWriterTag.Table);

            //phone valid
            if (validType.SelectedIndex == 0)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                validType.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                validTextBox.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                phoneValidator.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                phoneFormatValidator.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderEndTag();
            }
            //email valid
            if (validType.SelectedIndex == 1)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                validType.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                validTextBox.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                emailValidator.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                emilFormatValidator.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderEndTag();
            }
            //hand phone valid
            if (validType.SelectedIndex == 2)
            {
                writer.RenderBeginTag(HtmlTextWriterTag.Tr);
                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                validType.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                validTextBox.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                handphoneValidator.RenderControl(writer);
                writer.RenderEndTag();

                writer.RenderBeginTag(HtmlTextWriterTag.Td);
                handphoneFormatValidator.RenderControl(writer);
                writer.RenderEndTag();
                writer.RenderEndTag();
            }                   
            writer.RenderEndTag();
        }
    }
}


效果:

 附件: 您所在的用户组无法下载或查看附件
 
1  /  1  页   1 跳转

快速回复帖子

标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
  [完成后可按 Ctrl+Enter 无刷新发布]  

版权所有 拼吾爱程序人生    

Powered by Discuz!NT 2.1.202   Copyright © 2001-2008 Comsenz Inc. 鄂ICP备07500843号
返顶部