//
-// System.Web.UI.WebControls.CompareValidator.cs
+// System.Web.UI.WebControls.CompareValidator
//
// Authors:
-// Gaurav Vaish (gvaish@iitk.ac.in)
-// Andreas Nahr (ClassDevelopment@A-SoftTech.com)
+// Chris Toshok (toshok@novell.com)
//
-// (C) Gaurav Vaish (2002)
-// (C) 2003 Andreas Nahr
-//
-
+// (C) 2005 Novell, Inc (http://www.novell.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
-using System;
-using System.Web;
-using System.Web.UI;
+using System.Globalization;
using System.ComponentModel;
+using System.Security.Permissions;
-namespace System.Web.UI.WebControls
-{
- [ToolboxData("<{0}:CompareValidator runat=\"server\""
- + "ErrorMessage=\"CompareValidator\"></{0}:CompareValidator>")]
- public class CompareValidator: BaseCompareValidator
+namespace System.Web.UI.WebControls {
+ // CAS
+ [AspNetHostingPermission (SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+ [AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)]
+ // attributes
+#if NET_2_0
+ [ToolboxData("<{0}:CompareValidator runat=\"server\" ErrorMessage=\"CompareValidator\"></{0}:CompareValidator>")]
+#else
+ [ToolboxData("<{0}:CompareValidator runat=server ErrorMessage=\"CompareValidator\"></{0}:CompareValidator>")]
+#endif
+ public class CompareValidator : BaseCompareValidator
{
- public CompareValidator()
+ public CompareValidator ()
{
- // Intitalize();
}
- [DefaultValue (""), WebCategory ("Behavior")]
- [TypeConverter (typeof (ValidatedControlConverter))]
- [WebSysDescription ("The ID of a control that is compared.")]
- public string ControlToCompare
+ protected override void AddAttributesToRender (HtmlTextWriter w)
{
- get
- {
- object o = ViewState["ControlToCompare"];
- if(o!=null)
- return (string)o;
- return String.Empty;
+ if (RenderUplevel) {
+ if (ControlToCompare != "")
+ w.AddAttribute ("controltocompare", ControlToCompare);
+ if (ValueToCompare != "")
+ w.AddAttribute ("valuetocompare", ValueToCompare);
+ w.AddAttribute ("operator", Operator.ToString());
+ w.AddAttribute("evaluationfunction", "CompareValidatorEvaluateIsValid");
}
- set
- {
- ViewState["ControlToCompare"] = value;
- }
+ base.AddAttributesToRender (w);
}
- [DefaultValue (typeof (ValidationCompareOperator), "Equal"), WebCategory ("Behavior")]
- [WebSysDescription ("The operator that is used for comparison.")]
- public ValidationCompareOperator Operator
+ protected override bool ControlPropertiesValid ()
{
- get
- {
- object o = ViewState["Operator"];
- if(o!=null)
- return (ValidationCompareOperator)o;
- return ValidationCompareOperator.Equal;
- }
- set
- {
- if(!System.Enum.IsDefined(typeof(ValidationCompareOperator), value))
- throw new ArgumentException();
- ViewState["Operator"] = value;
- }
- }
+ /* if the control id is the default "", or if we're
+ * using the one Operator that ignores the control
+ * id.. */
+ if (ControlToCompare == "" || Operator == ValidationCompareOperator.DataTypeCheck)
+ return base.ControlPropertiesValid();
- [DefaultValue (""), Bindable (true), WebCategory ("Behavior")]
- [WebSysDescription ("The value that is compared to.")]
- public string ValueToCompare
- {
- get
- {
- object o = ViewState["ValueToCompare"];
- if(o!=null)
- return (string)o;
- return String.Empty;
- }
- set
- {
- ViewState["ValueToCompare"] = value;
- }
+ /* attempt to locate the ControlToCompare somewhere on the page */
+ Control control = NamingContainer.FindControl (ControlToCompare);
+ if (control == null)
+ throw new HttpException (String.Format ("Unable to locate ControlToCompare with id `{0}'", ControlToCompare));
+
+ return base.ControlPropertiesValid ();
}
protected override bool EvaluateIsValid ()
{
- string ctrl = GetControlValidationValue (ControlToValidate);
- if (ctrl == null || ctrl.Length == 0)
+ /* wtf? */
+ if (GetControlValidationValue (ControlToValidate) == "")
return true;
- string cmp;
- if (ControlToCompare.Length > 0) {
- cmp = GetControlValidationValue (ControlToCompare);
- } else {
- cmp = ValueToCompare;
- }
+ string compare;
+ /* ControlToCompare takes precendence, if it's set. */
+ compare = (ControlToCompare != "" ? GetControlValidationValue (ControlToCompare) : ValueToCompare);
- return Compare (ctrl, cmp, Operator, Type);
+ return BaseCompareValidator.Compare (GetControlValidationValue (ControlToValidate), compare,
+ Operator,
+ this.Type);
}
- [MonoTODO]
- protected override void AddAttributesToRender (HtmlTextWriter writer)
- {
- base.AddAttributesToRender (writer);
+ [DefaultValue("")]
+ [TypeConverter(typeof(System.Web.UI.WebControls.ValidatedControlConverter))]
+ [WebSysDescription ("")]
+ [WebCategory ("Behavior")]
+#if NET_2_0
+ [Themeable (false)]
+#endif
+ public string ControlToCompare {
+ get { return ViewState.GetString ("ControlToCompare", String.Empty); }
+ set { ViewState["ControlToCompare"] = value; }
}
- [MonoTODO]
- protected override bool ControlPropertiesValid ()
- {
- return base.ControlPropertiesValid ();
+ [DefaultValue(ValidationCompareOperator.Equal)]
+ [WebSysDescription ("")]
+ [WebCategory ("Behavior")]
+#if NET_2_0
+ [Themeable (false)]
+#endif
+ public ValidationCompareOperator Operator {
+ get { return (ValidationCompareOperator)ViewState.GetInt ("Operator", (int)ValidationCompareOperator.Equal); }
+ set { ViewState ["Operator"] = (int)value; }
+ }
+
+#if !NET_2_0
+ [Bindable(true)]
+#endif
+ [DefaultValue("")]
+ [WebSysDescription ("")]
+ [WebCategory ("Behavior")]
+#if NET_2_0
+ [Themeable (false)]
+#endif
+ public string ValueToCompare {
+ get { return ViewState.GetString ("ValueToCompare", String.Empty); }
+ set { ViewState ["ValueToCompare"] = value; }
}
}
}