2004-06-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
[mono.git] / mcs / class / System.Web / System.Web.UI.WebControls / CustomValidator.cs
1 //
2 // System.Web.UI.WebControls.CustomValidator.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 //\r
11 \r
12 using System;\r
13 using System.Web;\r
14 using System.Web.UI;\r
15 using System.ComponentModel;\r
16 \r
17 namespace System.Web.UI.WebControls\r
18 {\r
19         [DefaultEvent("ServerValidate")]\r
20         [ToolboxData("<{0}:CustomValidator runat=\"server\""\r
21                      + "ErrorMessage=\"CustomValidator\">"\r
22                      + "</{0}:CustomValidator>")]\r
23         public class CustomValidator : BaseValidator\r
24         {\r
25                 private static readonly object ServerValidateEvent = new object();\r
26 \r
27                 public CustomValidator()\r
28                 {\r
29                 }\r
30
31                 [DefaultValue (""), WebCategory ("Behavior")]
32                 [WebSysDescription ("A client script that performs the validation.")]\r
33                 public string ClientValidationFunction\r
34                 {\r
35                         get\r
36                         {\r
37                                 object o = ViewState["ClientValidationFunction"];\r
38                                 if(o != null)\r
39                                 {\r
40                                         return (string)o;\r
41                                 }\r
42                                 return String.Empty;\r
43                         }\r
44                         set\r
45                         {\r
46                                 ViewState["ClientValidationFunction"] = value;\r
47                         }\r
48                 }\r
49
50                 [WebSysDescription ("Raised for validation on the server.")]\r
51                 public event ServerValidateEventHandler ServerValidate\r
52                 {\r
53                         add\r
54                         {\r
55                                 Events.AddHandler(ServerValidateEvent, value);\r
56                         }\r
57                         remove\r
58                         {\r
59                                 Events.RemoveHandler(ServerValidateEvent, value);\r
60                         }\r
61                 }\r
62 \r
63                 protected override void AddAttributesToRender(HtmlTextWriter writer)\r
64                 {\r
65                         base.AddAttributesToRender(writer);\r
66                         if(RenderUplevel)\r
67                         {\r
68                                 writer.AddAttribute("evaluationfunction", "CustomValidatorEvaluateIsValid");\r
69                                 if(ClientValidationFunction.Length > 0)\r
70                                 {\r
71                                         writer.AddAttribute("clientvalidationfunction", ClientValidationFunction);\r
72                                 }\r
73                         }\r
74                 }\r
75 \r
76                 protected override bool ControlPropertiesValid()\r
77                 {\r
78                         if(ControlToValidate.Length > 0)\r
79                         {\r
80                                 CheckControlValidationProperty(ControlToValidate, "ControlToValidate");\r
81                         }\r
82                         return true;\r
83                 }\r
84 \r
85                 protected virtual bool OnServerValidate(string value)\r
86                 {\r
87                         if(Events != null)\r
88                         {\r
89                                 ServerValidateEventHandler sveh = (ServerValidateEventHandler)(Events[ServerValidateEvent]);\r
90                                 if(sveh != null)\r
91                                 {\r
92                                         ServerValidateEventArgs args = new ServerValidateEventArgs(value, true);\r
93                                         sveh(this, args);\r
94                                         return args.IsValid;\r
95                                 }\r
96                         }\r
97                         return true;\r
98                 }\r
99 \r
100                 protected override bool EvaluateIsValid()\r
101                 {\r
102                         string ctrl = ControlToValidate;\r
103                         if(ctrl.Length > 0)\r
104                         {\r
105                                 ctrl = GetControlValidationValue(ctrl);\r
106                                 if(ctrl== null || ctrl.Length == 0)\r
107                                 {\r
108                                         return true;\r
109                                 }\r
110                         }\r
111                         return OnServerValidate(ctrl);\r
112                 }\r
113         }\r
114 }\r