Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 17049|Antwoord: 2

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

[Link kopiëren]
Geplaatst op 21-04-2015 15:56:12 | | |
Wat betreft het gebruik van de Gridview-controle op dezelfde pagina, blijkt dat de server niet kan reageren op het update-event, het lijkt erop dat het foutalarm is en vervolgens informatie opvraagt, en nu wordt de oplossing als volgt samengevat: Klik op het update-event kan niet reageren omdat de postback- of callback-parameter ongeldig is. Gebeurtenisvalidatie is ingeschakeld in de configuratie met <pages enableEventValidation="true"/> of <%@ Page EnableEventValidation="true" %> op pagina's. Voor beveiligingsdoeleinden verifieert deze functie dat de parameters van de postback- of callback-gebeurtenissen afkomstig zijn van de servercontrole die ze oorspronkelijk heeft weergegeven. Als de data geldig en verwacht is, gebruik dan de Clientscrip om de tManager.RegisterForEventValidation-methode te verwijderen om een postback- of callback-data te registreren voor validatie.
Beschrijving: Er trad een niet-behandelde uitzondering op tijdens de uitvoering van het huidige webverzoek. Controleer de stacktrace-informatie voor details over de fout en waar deze vandaan kwam in je code die de fout veroorzaakte.
         Uitzonderingsdetails: System.ArgumentException: Ongeldige postback- of callbackparameters. Gebeurtenisvalidatie is ingeschakeld in de configuratie met < pagina's enableEventValidation="true"/> of <% @ Page EnableEventValidation="true" %> op pagina's. Voor beveiligingsdoeleinden verifieert deze functie dat de parameters van het postback- of callback-event afkomstig zijn van de servercontrole die ze oorspronkelijk heeft weergegeven. Als de data geldig en verwacht is, gebruik dan de Clientscrip om de tManager.RegisterForEventValidation-methode te verwijderen om een postback- of callback-data te registreren voor validatie.

       Na lang onderzoek vond ik geen probleem, en het was correct om de code opnieuw te controleren, en ik controleerde de ID's en attributen van alle bedieningselementen op de pagina, maar vond het probleem nog steeds niet. Later kwam ik erachter dat het volgende is gebeurd:

Voorkomensomstandigheden:
1. Er zijn verborgen bedieningselementen op het scherm.
2. Meerdere Gridview-bindingen.

3. Genest in meerdere vormen.
Oorzaken van het optreden:
. .NET genereert een __EVENTVALIDATION verborgen veld op de uiteindelijke pagina op basis van de uitvoerelementen op de pagina. Er werd een eenvoudige test gedaan. Maak een <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> en maak de bijbehorende Click-event handler. Start het programma en reageer correct op het evenement. Stel vervolgens btnSubmit.Visable=false in en voeg handmatig <input type="submit" naam="btnSubmit" value="Submit" /> toe aan de pagina. Voer het programma uit en er verschijnt een uitzondering met de EnableEventValidify-inhoud. Stel <@Page EnableEventValidation="false" in > voer het programma opnieuw uit om correct op het event te reageren. Als je de inhoud van de twee __EVENTVALIDATION voor en na observeert, blijkt dat ze verschillend zijn. Wat betreft de uitzondering die optreedt, kan worden aangenomen dat btnSubmit niet in de output is opgenomen, maar wanneer het aan de achtergrond wordt gestuurd, is er overeenkomstige inhoud, die inconsistent is, dus in het geval van eventverificatie ingeschakeld. .NET gooit een uitzondering.

Oplossing 1:
Page_Load(objectafzender, EventArgs e)
{
    als (! Page.IsPostBack)
    {
        bindgegevens;
    }
}
Oplossing 2:
<pagina's enableEventValidation="false"/>

1. Voeg EnableEventValidation="false" toe aan de <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" erft="_Default" %> van de pagina. (Allereerst)

2. Ga door web.config
<system.web>
<pagina's enableEventValidation="false"/>

3. Het is Formulier-nesteling, een pagina kan maar één Formulier hebben, wat opgelost kan worden door de code zorgvuldig te controleren.

4. Als de pagina bedieningselementen bevat zoals DropDownList of ListBox, kan dit door de volgende redenen worden veroorzaakt:

4.1 Het gebruik van ajax in het dropdownmenu is vaak te vinden in het provinciale en stadslinkagemenu, wat kan komen doordat de initiële itemwaarde van het dropdownmenu aan de aspx-pagina wordt toegewezen, de foutmelding wordt gegeven wanneer het event wordt geplaatst, de initiële itemwaarde van het dropdownmenu wordt verwijderd en het itemitem wordt toegevoegd aan het gebonden evenement.
4.2 De reden is dat de Value-eigenschap van de ListItem van de DropDownList-controle Chinese karakters bevat. Verander de waarde gewoon naar Engels of een getal. Het is het beste om de volgende instructie toe te voegen aan web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Omdat POSTBACK niet gecodeerd is in UTF-8, zal het verwijderen van t door JAVAscrip als problematisch worden beschouwd.
Verander gewoon requestEncoding="utf-8" ernaar, maar responseEncoding="utf-8" doet dat niet

5. Registreer je voor eventvalidatie
Het principe is dat asp.net deze postbackwaarde kunt registreren.
RegisterForEventValidation moet worden aangeroepen bij render.






Vorig:Tianhe-2 mocht geen insiders kopen: De Verenigde Staten zijn jaloers op China's supercomputerkracht
Volgend:Professionaliteit "Loopbaanplansjabloon"
 Huisbaas| Geplaatst op 22-04-2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Code kopiëren


Geplaatst op 22-04-2015 10:40:46 |
Ik ben het eens met het punt boven dat EnableEventValidation="true" lokaal valideert en CPU verbruikt; EnableEventValidation="false" geeft de servervalidatie terug en laadt de pagina opnieuw.
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com