Publication non valide ou de rappel de l'argument. Lorsque vous cliquez sur le bouton
J'ai une page web avec les différents contrôles. Deux d'entre eux sont dropdownlists. La première dropdownlist est renseigné à partir d'un fichier xml sur l'événement page_load. Cela fonctionne très bien. Pour la première dropdownlist un cascadingdropdownlist extender est attaché, qui appelle un service web à chaque fois que la sélection dans la première dropdownlist est changé. Cela fonctionne très bien aussi. En dessous de mes deux dropdownlists j'ai un bouton qui affiche la page. Cependant, quand j'ai fait une sélection dans la deuxième liste déroulante et cliquez sur le bouton j'obtiens l'erreur suivante:
Erreur de serveur dans l'Application'/'.
Publication non valide ou de rappel de l'argument. Cas où la validation est activé à l'aide de la configuration ou <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de sécurité, cette fonction vérifie que les arguments de la publication ou de rappel des événements proviennent du serveur de contrôle qui, à l'origine rendus. Si les données sont valides et attendu, l'utilisation de la ClientScriptManager.RegisterForEventValidation méthode pour enregistrer la publication ou de rappel de données pour la validation.
Description: Une exception non gérée s'est produite pendant l'exécution de la demande web actuelle. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et où elle a son origine dans le code.Détails De L'Exception: System.ArgumentException: publication non Valide ou de rappel de l'argument. Cas où la validation est activé à l'aide de la configuration ou <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de sécurité, cette fonction vérifie que les arguments de la publication ou de rappel des événements proviennent du serveur de contrôle qui, à l'origine rendus. Si les données sont valides et attendu, l'utilisation de la ClientScriptManager.RegisterForEventValidation méthode pour enregistrer la publication ou de rappel de données pour la validation.
Source De L'Erreur:
Une exception non gérée s'est produite lors de l'exécution de la demande web actuelle. Informations concernant l'origine et l'emplacement de l'exception peut être identifié à l'aide de la trace de pile d'exception ci-dessous.
Trace De La Pile:
[ArgumentException: publication non Valide ou de rappel de l'argument. Cas où la validation est activé à l'aide de la configuration ou <%@ Page EnableEventValidation="true" %> dans une page. Pour des raisons de sécurité, cette fonction vérifie que les arguments de la publication ou de rappel des événements proviennent du serveur de contrôle qui, à l'origine rendus. Si les données sont valides et attendu, l'utilisation de la ClientScriptManager.RegisterForEventValidation méthode pour enregistrer la publication ou de rappel de données pour la validation.]
Système.Web.L'INTERFACE utilisateur.ClientScriptManager.ValidateEvent(String id unique, argument de type String) +10945696
Système.Web.L'INTERFACE utilisateur.Contrôles webcontrols.DropDownList.LoadPostData(String postDataKey, NameValueCollection postCollection) +72
Système.Web.L'INTERFACE utilisateur.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +507
Système.Web.L'INTERFACE utilisateur.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2071
Désolé pour la terrible mise en forme. Toutes les suggestions sur les raisons de cette erreur est générée et comment l'empêcher?
Merci,
Ben
OriginalL'auteur b3n | 2010-08-03
Vous devez vous connecter pour publier un commentaire.
C'est un problème connu avec le AJAX CascadingDropDown extender.
Dans l'ordre pour que cela fonctionne correctement, vous devez désactiver la validation.
Voici un fil de discuter de la question:
http://forums.asp.net/t/1032053.aspx
J'ai eu le même problème, c'est pourquoi j'ai abandonné à l'aide de la CascadingDropDown extender et juste utilisé un client régulier du côté de dropdownlist et certains jQuery.
Vous avez deux options:
Cas de validation empêche l'état de la page trafiquée entre les demandes. Malheureusement, l'AJAX CDDL est exactement ce que, pour quelque raison que ce soit.
Ce n'est pas quelque chose que vous devriez désactiver juste pour obtenir le CDDL de travail, car il affecte l'ensemble de la page et peut causer des problèmes de sécurité.
Mon avis, mordre la balle fossé à la CDDL et de le remplacer avec jQuery.
OriginalL'auteur RPM1984
Je viens de trouver la réponse à mes propres questions.
Le problème est que l'AJAX ajoute les nouvelles valeurs de la dropdownlist mais comme ils ne sont pas dans l'état d'affichage ASP.NET s'arrête avec une erreur. Il y a un super blog post ici qui explique comment résoudre ce problème, il a très bien fonctionné pour moi.
Fondamentalement que vous venez de la sous-classe de la classe dropdownlist qui se débarrasser de la SupportsEventValidation attribut -> ASP.NET ne pas valider les valeurs plus et tout fonctionne très bien!
Lire tout le post ici:
Sous-classement de la DropDownList pour supprimer l'attribut SupportsEventValidation
J'ai eu un coup d'oeil à le faire avec la mise à jour des panneaux mais s'est coincé. Je voudrais changer le texte de la deuxième dropdownlist à "Chargement..." alors que le fond est la logique de récupération de ces valeurs. Je le fais avec un onchange javascript attachée à la première liste déroulante. Cependant, le texte passe bien, mais la publication semble être interrompue et l'absence de valeurs sont chargés. Une idée de comment contourner ce problème?
je suis en train de faire exactement la même chose. j'ai une liste déroulante: sélectionnez l'état. lorsqu'ils choisissent un état, une deuxième liste déroulante obtient le texte réglé sur "Chargement des Villes...", faire un appel ajax vers un service web, il se lie à la liste déroulante. tous à l'aide de jquery et un appel de service web. (événement onchange du 1er ddl). pour faire dans l'arrière-plan, vous aurez besoin d'appeler le service web de manière asynchrone, en fournissant une fonction de rappel de la fonction de rappel, clair le texte de chargement et de lier les valeurs..
Pourriez-vous publier un peu de code? Qui serait d'une grande aide.
Ça fait deux ans et vous n'avez pas retourné à partir de votre bureau encore..
OriginalL'auteur b3n
J'ai beaucoup cherché et fini avec cette solution de contournement:
http://avinashsing.sunkur.com/2011/03/24/dropdownlist-in-asp-net-does-not-retain-control-state/
pour le Générique de l'Utilisateur, votre Page Parent:
puis pour chaque Contrôle DropDownList dans votre page, ajouter:
OnDataBound="cbGenericDropDownList_DataBound"
OriginalL'auteur Muhammad Omar ElShourbagy