ASP .NET AJAX e validazione di controlli aggiunti in un postback

by Andrea 21 March 2007 22:03

Se avete provato a validare controlli inseriti in un postback all'interno di un UpdatePanel, vi sarete accorti che la cosa non funziona e nemmeno genera errori.
La storia è semplice, l'UpdatePanel renderizza solamente il suo contenuto e non aggiorna le altre pagine della pagina, che nel caso dei validatori avrebbero contenuto degli script per agganciare il validatore al controllo.
Matt Gibbs, che fa parte del team di sviluppo di ASP .NET AJAX ci è venuto in contro e ha modificato il codice dei validatori facendo si che gli script necessari venissero registrati nella pagina tramite lo ScriptManager.
A questo link trovate un suo post sull'argomento e sono disponibili i sorgenti dei validatori modificati e pronti per il download.

Per sostituire i validatori, è sufficente referenziare la dll contenente i validatori modificati ed aggiungere nella sezione pages del Web.config questa sezione tagMapping:

<tagMapping>
    <add tagType="System.Web.UI.WebControls.CompareValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.CompareValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.CustomValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.CustomValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.RangeValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.RangeValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.RegularExpressionValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.RegularExpressionValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.RequiredFieldValidator"
        mappedTagType=" Sample.Web.UI.Compatibility.RequiredFieldValidator, Validators, Version=1.0.0.0"/>
    <add tagType="System.Web.UI.WebControls.ValidationSummary"
        mappedTagType=" Sample.Web.UI.Compatibility.ValidationSummary, Validators, Version=1.0.0.0"/>
</tagMapping>

In questo modo, i validatori dichiarati come <asp:CompareValidator .../> e gli altri, saranno ridirezionati nel nuovo namespace (nell'assembly appena aggiunto).
Occhi quando vi trovate nel codebehind al namespace che state usando, controllate di puntare effettivamente alla nuova dll.

E tutto questo vale per:

  • CompareValidator
  • CustomValidator
  • RangeValidator
  • RegularExpressionValidator
  • RequiredFieldValidator
  • ValidationSummary

Devo ammettere che ha fatto proprio un buon lavoro, e gli faccio i miei complimenti perchè sarebbe stata una grave mancanza non avere la validazioni in controlli aggiunti dinamicamente in un postback.

Technorati tags: ,

Tags: , , , ,

ASP.NET AJAX

Comments are closed