Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

Validator et UpdatePanel - Bug des contrôles de validation avec Microsoft ASP.net Ajax

Si vous décidez d'utiliser des contrôles de validation dans un UpdatePanel il se peut que vous rencontriez des problèmes. En effet si vous rafraichissez un UpdatePanel qui contient un validator, le message d'erreur lié au validateur ne sera jamais affiché.

Prenons un exemple concret :

<asp:ScriptManager ID="sc1" runat="server" /> <asp:UpdatePanel ID="up1" runat="server"> <ContentTemplate> <%=DateTime.Now.ToLongTimeString() %> <asp:TextBox ID="tb1" runat="server" /> <asp:RequiredFieldValidator ID="rq1" runat="server" ControlToValidate="tb1" ErrorMessage="*" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btn1" /> <asp:AsyncPostBackTrigger ControlID="btn2" /> </Triggers> </asp:UpdatePanel> <asp:Button ID="btn1" runat="server" Text="Refresh UpdatePanel" CausesValidation="false" /> <asp:Button ID="btn2" runat="server" Text="Validate the textbox" />

Lorsque je click sur le premier bouton, mon UpdatePanel se rafraichit correctement, si je clique ensuite sur le second bouton et que la textbox est vide, rien ne ce passe ; la validation s'effectue correctement mais il n'y a aucun message d'erreur. La raison est que les contrôles de validation ont besoin d'un script client, or dans un UpdatePanel en cours de rafraichissement il faut utiliser la méthode ScriptManager.RegisterStartupScript & co pour pouvoir ajouter un script plutôt que ClientScript.RegisterStartupScript.

Dans les versions bétas et même RC de Microsoft Ajax Extensions, on avait des nouveaux validator, il suffisait d'utiliser le tagmapping, et tous les contrôles de validation fonctionnait correctement. Malheureusement dans la version finale, ces contrôles ont disparues ! D'après Matt Gibbs, il devrait bientôt avoir un patch pour ASP.net livré via Windows Update qui corrigera ce problème. En attendant vous pouvez utiliser les contrôles mis à disposition sur son blog : ASP.net Ajax Validators. Après avoir rajouté la dll dans le bin de votre application il vous faudra rajouter les quelques lignes suivantes dans votre web.config :

<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>

A partir de là, les contrôles de validation fonctionneront correctement dans un UpdatePanel.

Posted: dimanche 18 février 2007 01:06 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

SuperBouly a dit :

Bonjour,

Très bonne information (comme toujours). J'ai eu un autre avatar avec la validation et un UpdatePanel (j'essaie de simplifier au maximum):

J'ai une chechboxList (autoPostBack=True) qui commande le contenu d'un updatePanel : des textBox correspondant aux cases cochées.

Si on coche 3 cases, par ex., Il apparaît 3 textbox et leurs valideurs, créés dynamiquement.

Un Bouton enregistre les données.

Si je décoche une case créée précédemment, la textbox correspondante disparaît correctement,  le valideur est également supprimé par le code. Mais je ne peux enregistrer, car la validation échoue.

Le valideur (RequireFieldValidator) ne semble pas supprimé, et empêche l'enregistrement: le serveur me demande de remplir la textbox qui a été supprimée...

J'ai longtemps cherché l'erreur de mon code, mais il ne semble pas y en avoir:

Si je déclare la checkBoxList en asyncPostBackTrigger, ça ne marche pas.

En revanche, si je la déclare en postbackTrigger (ou pas du tout), ça marche très bien, j'ai un postback classique, et le code est parcouru de la même façon au débogage...

Je m'en suis tiré en supprimant la création dynamique des valideurs et en effectuant une vérification des données juste avant l'enregistrement des données.

As-tu entendu parler de ce genre d'ennui, qui ne semble pas le même que celui que tu décris.

Tout se passe comme si le serveur gardait en mémoire la liste des validations à effectuer , sans l'actualiser. Y a-t-il un moyen de l'actualiser

Cordialement

SuperBouly

# août 3, 2008 14:10

cyril a dit :

# août 4, 2008 11:14
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01