RegularExpressionValidator.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / fx / src / xsp / System / Web / UI / WebControls / RegularExpressionValidator.cs / 1 / RegularExpressionValidator.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

/* 
 */ 

namespace System.Web.UI.WebControls { 

    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Text.RegularExpressions; 
    using System.Drawing.Design;
    using System.Web; 
    using System.Security.Permissions; 
    using System.Web.Util;
 

    /// 
    ///    Checks if the value of the associated input control matches the pattern
    ///       of a regular expression. 
    /// 
    [ 
    ToolboxData("<{0}:RegularExpressionValidator runat=\"server\" ErrorMessage=\"RegularExpressionValidator\">") 
    ]
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] 
    [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    public class RegularExpressionValidator : BaseValidator {

 
        /// 
        ///    Indicates the regular expression assigned to be the validation criteria. 
        ///  
        [
        WebCategory("Behavior"), 
        Themeable(false),
        DefaultValue(""),
        Editor("System.Web.UI.Design.WebControls.RegexTypeEditor, " + AssemblyRef.SystemDesign, typeof(UITypeEditor)),
        WebSysDescription(SR.RegularExpressionValidator_ValidationExpression) 
        ]
        public string ValidationExpression { 
            get { 
                object o = ViewState["ValidationExpression"];
                return((o == null) ? String.Empty : (string)o); 
            }
            set {
                try {
                    Regex.IsMatch(String.Empty, value); 
                }
                catch (Exception e) { 
                    throw new HttpException( 
                                           SR.GetString(SR.Validator_bad_regex, value), e);
                } 
                ViewState["ValidationExpression"] = value;
            }
        }
 

        ///  
        ///  
        ///    AddAttributesToRender method
        ///  
        protected override void AddAttributesToRender(HtmlTextWriter writer) {
            base.AddAttributesToRender(writer);
            if (RenderUplevel) {
                string id = ClientID; 
                HtmlTextWriter expandoAttributeWriter = (EnableLegacyRendering) ? writer : null;
                AddExpandoAttribute(expandoAttributeWriter, id, "evaluationfunction", "RegularExpressionValidatorEvaluateIsValid", false); 
                if (ValidationExpression.Length > 0) { 
                    AddExpandoAttribute(expandoAttributeWriter, id, "validationexpression", ValidationExpression);
                } 
            }
        }

 
        /// 
        ///  
        ///    EvaluateIsValid method 
        /// 
        protected override bool EvaluateIsValid() { 

            // Always succeeds if input is empty or value was not found
            string controlValue = GetControlValidationValue(ControlToValidate);
            Debug.Assert(controlValue != null, "Should have already been checked"); 
            if (controlValue == null || controlValue.Trim().Length == 0) {
                return true; 
            } 

            try { 
                // we are looking for an exact match, not just a search hit
                Match m = Regex.Match(controlValue, ValidationExpression);
                return(m.Success && m.Index == 0 && m.Length == controlValue.Length);
            } 
            catch {
                Debug.Fail("Regex error should have been caught in property setter."); 
                return true; 
            }
        } 

    }
}
 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK