SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010
-
3 mai 2008 à 21:57
metafr
Messages postés4Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention12 novembre 2013
-
7 avril 2009 à 10:52
bonjour,
Une fois de plus le problème de EnableEventValidation.
Ma page contient, entre autres, un gridView avec une colonne "Sélectionner" et un formview affichant le détail de l'enregistrement sélectionné. et on peut y éditer modifier supprimer cet enregistrement. Une RadioButtonList permet un filtrage des enregistrements: jusqu'ici ça va.
J'ai entrepris d'insérer le tout dans un UpdatePanel. Là, les FileUpload n'ont pas fonctionné, normal, j'ai donc déclaré les événements de mon formview en "PostBack" et non en "AsyncPostBack". et Hop après 2 où 3 clicks, par exemple sur la RadioButtonList l'erreur :
Argument de publication ou de rappel non valide. La validation d'événement est activée via dans la configuration ou via <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de sécurité, cette fonctionnalité vérifie si les arguments des événements de publication ou de rappel proviennent du contrôle serveur qui les a rendus à l'origine. Si les données sont valides et attendues, utilisez la méthode ClientScriptManager.RegisterForEventValidation afin d'inscrire les données de publication ou de rappel pour la validation.
alors j'ai écrit
ProtectedOverloadsOverridesSub render (ByVal writer As System.Web.UI.HtmlTextWriter)
ClientScript.RegisterForEventValidation(rblDefi.UniqueID, "True")
'-------- ne marche pas non plus ------------------------------------------
ClientScript.GetPostBackEventReference(rblDefi, "SelectedChanged", True)
'-----------------------------------------------------------------------------------
MyBase.Render(writer)
End
Sub
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 4 mai 2008 à 21:26
ok, j'ai trouvé, j'avais oublié de mentionner un trigger (la radioButtonList du 2e UpdatePanel justement) dans le premier UpdatePanel. Au moins, cet exemple peut servir à savoir que ce que ce genre d'oubli peut provoquer et à orienter les recherches..
merci
SuperBouly
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 4 mai 2008 à 21:38
Bonjour,
Tu peux essayer de nous fournir un exemple le plus simpliste possible nous permettant de reproduire le problème. Car là c'est pas évident de t'aider.
Sinon, voici quelques pistes pour debugger, regarde ce que vaut Request.Form["__EVENTTARGET"] ensuite met un point d'arret dans le page_load (avant que l'erreur se produise) charge les symbols du framework (afin de récuperer les sources du framework), dans le menu debug > Exceptions, coche ce qu'il faut pour que VS s'arrete sur l'exception et normalement à partir de là tu vas réussir à tomber sur la source de l'exception (dans les sources du framework) et tu vas pouvoir analyser le call stack, afin de comprendre le problème.
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 5 mai 2008 à 06:56
Merci de ces pistes de recherche, je sais que la situation est très embrouillée, mais puisque le pb est résolu, je peux tout de même donner une idée de ce qui a provoqué l'erreur en simplifiant au maximum, je crois que ça peut intéresser.
J'ai 2 UpdatePanels (UP1 et UP2).
Dans le premier,UP1, un controle utilisateur CU muni d'une propriété "EstVisible", et dont le contenu est dépendant de controles situé dans UP2.
Dans le second, Un gridView GV avec une colonne de linkButtons "sélectionner" qui affichent dans un FormView FV, le détail d'un enregistrement en vue de modification/suppression. Mais aussi une RadioButtonList rbl de tri des enregistrements de GV. là, 2 choses se sont entrechoquées :
- Des fileUpload dans FV: J'ai du mettre FV en dans les 2 UP et ChildrenAsTriggers= "False" et le détail des triggers partout.
- et la sub sur la sélection de la RadioButtonList :
Protected
Sub rbl_SelectedIndexChanged(ByVal sender AsObject, ByVal e As System.EventArgs) Handles rbl .SelectedIndexChanged
</Triggers>Je sais que c'est très difficile à suivre, mais EN UN MOT, l'erreur vient de la non déclaration d'un trigger dans UP1 alors que un évènement dans UP2 demande une modification de son contenu. D'ou la suspicion .... Fallait trouver !
merci en tout cas de ta méthode pour un débogage fouillé, je la note.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 5 mai 2008 à 13:55
Ca m'a l'air un poil compliqué, je n'ai pas tout suivi (et j'ai pas pris le temps pour ;)) mais je ne pense pas que l'erreur viennent que "un évènement dans UP2 demande une modification de son contenu." c'est plutot que de mettre estVisible à false entraine des modification de structure au niveau de l'arbre de controle lors du render (déplacé/suppression de noeud). Tu peux surement modifié une propriété "à la con" sans que cela pose ce genre de problème :p
Bref, t'as quand meme réussis à resoudre le problème sans mettre enableEventValidation à false contrairement à ce que tous le monde fait :)
SuperBouly
Messages postés410Date d'inscriptiondimanche 1 février 2004StatutMembreDernière intervention 8 mai 2010 5 mai 2008 à 17:06
oui, c'était compliqué, j'ai donc simplifié, la propriété n'est pas vraiment "EstVisible", mais elle concerne la visibilité seulement d'une partie de l'UserControl, une liste de noms... je ne sais pas si ça change qqchose à ton diagnostic, en tout cas c'est vrai que la tentation est forte de mettre enableEventValidation à false et basta !.
SuperBouly
metafr
Messages postés4Date d'inscriptionjeudi 27 janvier 2005StatutMembreDernière intervention12 novembre 2013 7 avril 2009 à 10:52
Au plus j'utilise ASP.NET, au plus j'aime PHP.
Je ne comprends vraiment pas le succés de ce framework qui est une vrai usine à gaz.
Dès que l'on s'éloigne de l'utilisation 'normal' que M$ a prévu, cela devient cauchemardesque.
Beaucoup trop de temps perdu à chercher pourquoi "ça marche pas" et je ne parle pas du viewstate...