2003-08-01 Andreas Nahr <ClassDevelopment@A-SoftTech.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / CompareValidator.cs
1 //
2 // System.Web.UI.WebControls.CompareValidator.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
12 using System;
13 using System.Web;
14 using System.Web.UI;
15 using System.ComponentModel;
16
17 namespace System.Web.UI.WebControls
18 {
19         [ToolboxData("<{0}:CompareValidator runat=\"server\""
20                      + "ErrorMessage=\"CompareValidator\"></{0}:CompareValidator>")]
21         public class CompareValidator: BaseCompareValidator
22         {
23                 public CompareValidator()
24                 {
25                         // Intitalize();
26                 }
27
28                 [DefaultValue (""), WebCategory ("Behavior")]
29                 [TypeConverter (typeof (ValidatedControlConverter))]
30                 [WebSysDescription ("The ID of a control that is compared.")]
31                 public string ControlToCompare
32                 {
33                         get
34                         {
35                                 object o = ViewState["ControlToCompare"];
36                                 if(o!=null)
37                                         return (string)o;
38                                 return String.Empty;
39                         }
40
41                         set
42                         {
43                                 ViewState["ControlToCompare"] = value;
44                         }
45                 }
46
47                 [DefaultValue (typeof (ValidationCompareOperator), "Equal"), WebCategory ("Behavior")]
48                 [WebSysDescription ("The operator that is used for comparison.")]
49                 public ValidationCompareOperator Operator
50                 {
51                         get
52                         {
53                                 object o = ViewState["Operator"];
54                                 if(o!=null)
55                                         return (ValidationCompareOperator)o;
56                                 return ValidationCompareOperator.Equal;
57                         }
58                         set
59                         {
60                                 if(!System.Enum.IsDefined(typeof(ValidationCompareOperator), value))
61                                         throw new ArgumentException();
62                                 ViewState["Operator"] = value;
63                         }
64                 }
65
66                 [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
67                 [WebSysDescription ("The value that is compared to.")]
68                 public string ValueToCompare
69                 {
70                         get
71                         {
72                                 object o = ViewState["ValueToCompare"];
73                                 if(o!=null)
74                                         return (string)o;
75                                 return String.Empty;
76                         }
77                         set
78                         {
79                                 ViewState["ValueToCompare"] = value;
80                         }
81                 }
82
83                 protected override bool EvaluateIsValid ()
84                 {
85                         string ctrl = GetControlValidationValue (ControlToValidate);
86                         if (ctrl == null || ctrl.Length == 0)
87                                 return true;
88
89                         string cmp;
90                         if (ControlToCompare.Length > 0) {
91                                 cmp = GetControlValidationValue (ControlToCompare);
92                         } else {
93                                 cmp = ValueToCompare;
94                         }
95
96                         return Compare (ctrl, cmp, Operator, Type);
97                 }
98         }
99 }