2004-05-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / RegularExpressionValidator.cs
1 //
2 // System.Web.UI.WebControls.RegularExpressionValidator.cs
3 //
4 // Authors:
5 //   Gaurav Vaish (gvaish@iitk.ac.in)
6 //   Andreas Nahr (ClassDevelopment@A-SoftTech.com)
7 //
8 // (C) Gaurav Vaish (2002)
9 // (C) 2003 Andreas Nahr
10 //
11 \r
12 using System;
13 using System.ComponentModel;\r
14 using System.Web;\r
15 using System.Web.UI;\r
16 using System.Text.RegularExpressions;\r
17 \r
18 namespace System.Web.UI.WebControls\r
19 {\r
20         [ToolboxData("<{0}:RegularExpressionValidator runat=\"server\" "\r
21                       + "ErrorMessage=\"RegularExpressionValidator\">"\r
22                       + "</{0}:RegularExpressionValidator>")]\r
23         public class RegularExpressionValidator : BaseValidator\r
24         {\r
25                 public RegularExpressionValidator(): base()\r
26                 {\r
27                 }\r
28
29                 [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
30                 [Editor ("System.Web.UI.Design.WebControls.RegexTypeEditor, " + Consts.AssemblySystem_Design, typeof (System.Drawing.Design.UITypeEditor))]
31                 [WebSysDescription ("A regular expression that is used to validate.")]\r
32                 public string ValidationExpression\r
33                 {\r
34                         get\r
35                         {\r
36                                 object o = ViewState["ValidationExpression"];\r
37                                 if(o != null)\r
38                                 {\r
39                                         return (string)o;\r
40                                 }\r
41                                 return String.Empty;\r
42                         }\r
43                         set\r
44                         {\r
45                                 try\r
46                                 {\r
47                                         Regex.IsMatch("", value);\r
48                                 } catch(Exception)\r
49                                 {\r
50                                         throw new HttpException(HttpRuntime.FormatResourceString("Validator_bad_regex", value));\r
51                                 }\r
52                                 ViewState["ValidationExpression"] = value;\r
53                         }\r
54                 }\r
55 \r
56                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
57                 {\r
58                         base.AddAttributesToRender(writer);\r
59                         if(base.RenderUplevel)\r
60                         {\r
61                                 writer.AddAttribute("evaluationfunction", "RegularExpressionValidatorEvaluateIsValid");\r
62                                 string exp = ValidationExpression;\r
63                                 if(exp.Length > 0)\r
64                                 {\r
65                                         writer.AddAttribute("validationexpression", exp);\r
66                                 }\r
67                         }\r
68                 }\r
69 \r
70                 protected override bool EvaluateIsValid ()\r
71                 {\r
72                         string ctrl = GetControlValidationValue (ControlToValidate);\r
73                         if (ctrl == null || ctrl.Trim ().Length == 0)\r
74                                 return true;\r
75 \r
76                         bool retVal;\r
77                         try {\r
78                                 retVal = Regex.IsMatch (ctrl, "^" + ValidationExpression + "$");
79                         } catch (Exception) {\r
80                                 retVal = true;\r
81                         }\r
82                         return retVal;\r
83                 }\r
84         }\r
85 }\r