[ASP.NET] Validare i controlli della pagina dato il ValidationGroup

Posto questi due metodi perchè ho trovato divertente riuscire a rendere il codice così striminzito grazie a C# 3.0 e alla ricorsione:

   1:    private void ValidateByGroup(string validationGroup) {
   2:     List<BaseValidator> validators = new List<BaseValidator>(from validator in FindControlsByType<BaseValidator>(this)
   3:                      where validator.ValidationGroup == validationGroup select validator);
   4:     validators.ForEach(validator => validator.Validate());
   5:    }
   6:   
   7:    private static IList<T> FindControlsByType<T>(Control root) where T: Control {
   8:     List<T> controls = new List<T>();   
   9:     foreach (Control child in root.Controls) {
  10:      Type type = child.GetType().BaseType;
  11:      while(type != typeof(object)){
  12:       if (type == typeof(T))
  13:       {
  14:        controls.Add((T)child);
  15:        break;
  16:       }
  17:       type = type.BaseType;
  18:      }
  19:   
  20:      if (child.HasControls())
  21:       controls.AddRange(FindControl<T>(child));
  22:     }
  23:     return controls;
  24:    }


Perchè funzioni è necessario disabilitare il controllo lato client impostando a False la proprietà EnableClientScript dei validator. Per rendere comunque la pagina reattiva sarebbe bene sfruttare AJAX perchè in questo modo il controllo verrà fatto solo lato server.

Matteo Migliore.

Add Comment Filed Under [ ASP.NET Tip ]
Comments have been closed on this topic.