Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 17049|Répondre: 2

[ASP.NET] System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEven

[Copié le lien]
Publié sur 21/04/2015 15:56:12 | | |
Concernant l’utilisation du contrôle Gridview sur la même page, il est constaté que l’événement de mise à jour ne peut pas être répondu par le serveur, il semble que son alarme d’erreur puis interroge certaines informations, et la solution se résume ainsi : Cliquez sur l’événement de mise à jour ne peut pas répondre car le paramètre postback ou callback est invalide. La validation des événements est activée dans la configuration avec <pages enableEventValidation="true"/> ou < %@ Page EnableEventValidation="true » %> sur les pages. Pour des raisons de sécurité, cette fonctionnalité vérifie que les paramètres des événements de postback ou de rappel proviennent du contrôle serveur qui les a initialement rendus. Si les données sont valides et attendues, utilisez le Clientscrip pour supprimer la méthode tManager.RegisterForEventValidation afin d’enregistrer une donnée de postback ou de rappel pour validation.
Description : Une exception non prise en charge s’est produite lors de l’exécution de la requête web en cours. Vérifiez les informations de la pile pour obtenir des détails sur l’erreur et d’où elle vient dans votre code qui a causé l’erreur.
         Détails d’exception : System.ArgumentException : Paramètres de postback ou de rappel invalides. La validation des événements est activée dans la configuration avec < pages enableEventValidation="true"/> ou < % @ Page EnableEventValidation="true » %> sur les pages. Pour des raisons de sécurité, cette fonctionnalité vérifie que les paramètres de l’événement de postback ou de rappel proviennent du contrôle serveur qui les a initialement rendus. Si les données sont valides et attendues, utilisez le Clientscrip pour supprimer la méthode tManager.RegisterForEventValidation afin d’enregistrer une donnée de postback ou de rappel pour validation.

       Après l’avoir examiné longtemps, je n’ai trouvé aucun problème, il était correct de vérifier à nouveau le code, j’ai vérifié les identifiants et attributs de tous les contrôles sur la page et je n’ai toujours pas trouvé le problème. Plus tard, j’ai découvert que c’est ce qui s’est passé :

Conditions d’occurrence :
1. Il y a des commandes cachées à l’écran.
2. Multiples liaisons Gridview.

3. Imbriqués sous plusieurs formes.
Causes d’occurrence :
. .NET génère un champ caché __EVENTVALIDATION dans la page finale basé sur les éléments de sortie de la page. Un test simple fut fait. Créez un <asp : button id="btnSubmit » runat="server » text="Submit » tooltip="Submit » /> et créez le gestionnaire d’événement Click correspondant. Lance le programme et réponds correctement à l’événement. Ensuite, je définis btnSubmit.Visable=false et j’ajoute manuellement <type d’entrée="submit » nom="btnSubmit » valeur="Submit » /> sur la page. Exécutez le programme et une exception apparaîtra avec le contenu EnableEventValidation. Réglez <@Page EnableEventValidation="false » > relancez le programme pour répondre correctement à l’événement. En observant le contenu des deux __EVENTVALIDATION avant et après, on constate qu’ils sont différents. Concernant l’exception qui se produit, on peut considérer que btnSubmit n’est pas inclus dans la sortie, mais lorsqu’il est envoyé en arrière-plan, il y a du contenu correspondant, qui est incohérent, donc dans le cas de la vérification des événements activée. .NET lance une exception.

Solution 1 :
Page_Load(émetteur d’objet, EventArgs e)
{
    si ( ! Page.IsPostBack)
    {
        liaison des données ;
    }
}
Solution 2 :
<pages enableEventValidation="false"/>

1. Ajouter EnableEventValidation="false » au < %@ Page Language="C# » AutoEventWireup="true » CodeFile="Default.aspx.cs » Inherits="_Default » %> de la page. (Tout d’abord)

2. Passer par web.config
<system.web>
<pages enableEventValidation="false"/>

3. C’est un imbriquage de formulaires, une page ne peut avoir qu’un seul formulaire, qui peut être résolu en vérifiant soigneusement le code.

4. Si la page contient des contrôles tels que DropDownList ou ListBox, cela peut être causé par les raisons suivantes :

4.1 L’utilisation d’ajax dans le menu déroulant se trouve couramment dans le menu de liaison provincial et municipal, ce qui peut s’expliquer par le fait que la valeur initiale de l’élément du menu déroulant est attribuée à la page aspx, que l’erreur est déclenchée lors de la publication de l’événement, que la valeur initiale de l’élément du menu déroulant est supprimée, et que l’élément est ajouté à l’événement lié.
4.2 La raison est que la propriété Value du ListItem du contrôle DropDownList contient des caractères chinois. Il suffit de changer la valeur en anglais ou en un chiffre. Il est préférable d’ajouter la déclaration suivante dans le site web.config :
<requestEncoding="utf-8 » responseEncoding="utf-8 » culture="zh-CN » uiCulture="zh-CN"/> Parce que POSTBACK n’est pas encodé en UTF-8, le retrait de t par JAVAscrip sera considéré comme problématique.
Il suffit de changer requestEncoding="utf-8 » pour ça, mais responseEncoding="utf-8 » ne le fait pas

5. S’inscrire pour la validation de l’événement
Le principe est de laisser asp.net enregistrer cette valeur de retour.
RegisterForEventValidation doit être appelé lors du rendu.






Précédent:Tianhe-2 a été interdit d’acheter des initiés : les États-Unis jaloux de la puissance de supercalcul de la Chine
Prochain:Professionnalisme « Modèle de plan de carrière »
 Propriétaire| Publié sur 22/04/2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Code de copie


Publié sur 22/04/2015 10:40:46 |
Je suis d’accord avec le point du dessus : EnableEventValidation="true » validera localement et consommera le CPU ; EnableEventValidation="false » renverra la validation du serveur et rechargera la page.
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com