Author: mhabersack
Date: 2007-10-03 14:31:17 -0400 (Wed, 03 Oct 2007)
New Revision: 86825

Modified:
   trunk/mcs/class/System.Web/System.Web.UI/ChangeLog
   trunk/mcs/class/System.Web/System.Web.UI/Page.cs
Log:
2007-10-03  Marek Habersack  <[EMAIL PROTECTED]>

        * Page.cs: complete implementation of ValidationGroups. Fixes bug
        #330423. Patch from Juraj Skripsky <[EMAIL PROTECTED]>, thanks!


Modified: trunk/mcs/class/System.Web/System.Web.UI/ChangeLog
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI/ChangeLog  2007-10-03 17:40:44 UTC 
(rev 86824)
+++ trunk/mcs/class/System.Web/System.Web.UI/ChangeLog  2007-10-03 18:31:17 UTC 
(rev 86825)
@@ -1,3 +1,8 @@
+2007-10-03  Marek Habersack  <[EMAIL PROTECTED]>
+
+       * Page.cs: complete implementation of ValidationGroups. Fixes bug
+       #330423. Patch from Juraj Skripsky <[EMAIL PROTECTED]>, thanks!
+
 2007-10-02  Marek Habersack  <[EMAIL PROTECTED]>
 
        * SimpleWebHandlerParser.cs: fix the way types are loaded from

Modified: trunk/mcs/class/System.Web/System.Web.UI/Page.cs
===================================================================
--- trunk/mcs/class/System.Web/System.Web.UI/Page.cs    2007-10-03 17:40:44 UTC 
(rev 86824)
+++ trunk/mcs/class/System.Web/System.Web.UI/Page.cs    2007-10-03 18:31:17 UTC 
(rev 86825)
@@ -154,7 +154,6 @@
        bool isPostBack;
        bool isCallback;
        ArrayList requireStateControls;
-       Hashtable _validatorsByGroup;
        HtmlForm _form;
 
        string _title;
@@ -2426,28 +2425,33 @@
        }
        
        public ValidatorCollection GetValidators (string validationGroup)
-       {
-               string valgr = validationGroup;
-               if (valgr == null)
-                       valgr = String.Empty;
+       {                       
+               if (validationGroup == String.Empty)
+                       validationGroup = null;
 
-               if (_validatorsByGroup == null) _validatorsByGroup = new 
Hashtable ();
-               ValidatorCollection col = _validatorsByGroup [valgr] as 
ValidatorCollection;
-               if (col == null) {
-                       col = new ValidatorCollection ();
-                       _validatorsByGroup [valgr] = col;
-               }
+               ValidatorCollection col = new ValidatorCollection ();
+               if (_validators == null)
+                       return col;
+               
+               foreach (IValidator v in _validators)
+                       if (BelongsToGroup(v, validationGroup))
+                               col.Add(v);
+
                return col;
        }
        
+       bool BelongsToGroup(IValidator v, string validationGroup) {
+               BaseValidator validator = v as BaseValidator;
+               if (validationGroup == null)
+                       return validator == null || String.IsNullOrEmpty 
(validator.ValidationGroup); 
+               else
+                       return validator != null && validator.ValidationGroup 
== validationGroup;                       
+       }
+       
        public virtual void Validate (string validationGroup)
        {
                is_validated = true;
-               if (validationGroup == null)
-                       ValidateCollection (_validatorsByGroup [String.Empty] 
as ValidatorCollection);
-               else if (_validatorsByGroup != null) {
-                       ValidateCollection (_validatorsByGroup 
[validationGroup] as ValidatorCollection);
-               }
+               ValidateCollection (GetValidators (validationGroup));
        }
 
        object SavePageControlState ()

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to