* Parameter.cs:
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / RangeValidator.cs
1 //
2 // System.Web.UI.WebControls.RangeValidator.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.Xml;\r
17 \r
18 namespace System.Web.UI.WebControls\r
19 {\r
20         [ToolboxData("<{0}:RangeValidator runat=\"server\" "\r
21                       + "ErrorMessage=\"RangeValidator\"></{0}:RangeValidator>")]\r
22         public class RangeValidator : BaseCompareValidator\r
23         {\r
24                 public RangeValidator(): base()\r
25                 {\r
26                 }\r
27
28                 [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
29                 [WebSysDescription ("The maximum value that the validated control can be assigned.")]\r
30                 public string MaximumValue\r
31                 {\r
32                         get\r
33                         {\r
34                                 object o = ViewState["MaximumValue"];\r
35                                 if(o != null)\r
36                                 {\r
37                                         return (string)o;\r
38                                 }\r
39                                 return String.Empty;\r
40                         }\r
41                         set\r
42                         {\r
43                                 ViewState["MaximumValue"] = value;\r
44                         }\r
45                 }\r
46
47                 [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
48                 [WebSysDescription ("The minimum value that the validated control can be assigned.")]\r
49                 public string MinimumValue\r
50                 {\r
51                         get\r
52                         {\r
53                                 object o = ViewState["MinimumValue"];\r
54                                 if(o != null)\r
55                                 {\r
56                                         return (string)o;\r
57                                 }\r
58                                 return String.Empty;\r
59                         }\r
60                         set\r
61                         {\r
62                                 ViewState["MinimumValue"] = value;\r
63                         }\r
64                 }\r
65 \r
66                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
67                 {\r
68                         base.AddAttributesToRender(writer);\r
69                         if(base.RenderUplevel)\r
70                         {\r
71                                 writer.AddAttribute("evaluationfunction", "RangeValidatorEvaluateIsValid");\r
72                                 writer.AddAttribute("maximumvalue", MaximumValue);\r
73                                 writer.AddAttribute("minimumvalue", MinimumValue);\r
74                         }\r
75                 }\r
76 \r
77                 protected override bool ControlPropertiesValid()\r
78                 {\r
79                         string max = MaximumValue;\r
80                         if(!CanConvert(max, Type))\r
81                         {\r
82                                 string[] fmt = new string[4];\r
83                                 fmt[0] = max;\r
84                                 fmt[1] = "MaximumValue";\r
85                                 fmt[2] = ID;\r
86                                 fmt[3] = PropertyConverter.EnumToString(typeof(ValidationDataType), Type);\r
87                                 throw new HttpException(HttpRuntime.FormatResourceString("Validator_value_bad_type", fmt));\r
88                         }\r
89                         string min = MinimumValue;\r
90                         if(!CanConvert(min, Type))\r
91                         {\r
92                                 string[] fmt = new string[4];\r
93                                 fmt[0] = min;\r
94                                 fmt[1] = "MinimumValue";\r
95                                 fmt[2] = ID;\r
96                                 fmt[3] = PropertyConverter.EnumToString(typeof(ValidationDataType), Type);\r
97                                 throw new HttpException(HttpRuntime.FormatResourceString("Validator_value_bad_type", fmt));\r
98                         }\r
99 \r
100                         if(Compare(min,max,  ValidationCompareOperator.GreaterThan, Type))\r
101                         {\r
102                                 string[] fmt = new string[3];\r
103                                 fmt[0] = min;\r
104                                 fmt[1] = max;\r
105                                 fmt[2] = PropertyConverter.EnumToString(typeof(ValidationDataType), Type);\r
106                                 throw new HttpException(HttpRuntime.FormatResourceString("Validator_range_overalap", fmt));\r
107                         }\r
108                         return base.ControlPropertiesValid();\r
109                 }\r
110 \r
111                 protected override bool EvaluateIsValid()\r
112                 {\r
113                         string ctrl = GetControlValidationValue(ControlToValidate);\r
114                         if(ctrl == null || ctrl.Trim().Length == 0)\r
115                         {\r
116                                 return true;\r
117                         }\r
118                         bool retVal = Compare(ctrl, MinimumValue, ValidationCompareOperator.GreaterThanEqual,\r
119                                              this.Type);\r
120                         if(retVal)\r
121                         {\r
122                                 retVal = Compare(ctrl, MaximumValue, ValidationCompareOperator.LessThanEqual,\r
123                                                  this.Type);\r
124                         }\r
125                         return retVal;\r
126                 }\r
127         }\r
128 }\r