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