Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 17049|Svar: 2

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

[Kopier link]
Opslået på 21/04/2015 15.56.12 | | |
Med hensyn til brugen af Gridview-kontrollen på samme side viser det sig, at opdateringshændelsen ikke kan besvares af serveren; det ser ud til, at den er fejlalarm, og derefter forespørger den nogle oplysninger, og nu opsummeres løsningen således: Klik på opdateringsbegivenheden, kan ikke svare, fordi postback- eller callback-parameteren er ugyldig. Eventvalidering er aktiveret i konfigurationen med <pages enableEventValidation="true"/> eller <%@ Page EnableEventValidation="true" %> på sider. Af sikkerhedsmæssige årsager verificerer denne funktion, at parametrene for postback- eller callback-begivenhederne stammer fra serverkontrollen, der oprindeligt gengav dem. Hvis dataene er gyldige og forventede, brug Clientscrip til at fjerne metoden tManager.RegisterForEventValidation for at registrere en postback- eller callback-data til validering.
Beskrivelse: En ubehandlet undtagelse opstod under udførelsen af den aktuelle webforespørgsel. Tjek stack trace-oplysningerne for detaljer om fejlen og hvor den kom fra i din kode, der forårsagede fejlen.
         Undtagelsesdetaljer: System.ArgumentUndtagelse: Ugyldige postback- eller callback-parametre. Eventvalidering er aktiveret i konfigurationen med < sider enableEventValidation="true"/> eller <% @ Page EnableEventValidation="true" %> på sider. Af sikkerhedsmæssige årsager verificerer denne funktion, at parametrene for postback- eller callback-begivenheden stammer fra serverkontrollen, der oprindeligt gengav dem. Hvis dataene er gyldige og forventede, brug Clientscrip til at fjerne metoden tManager.RegisterForEventValidation for at registrere en postback- eller callback-data til validering.

       Efter at have kigget på det i lang tid fandt jeg ikke noget problem, og det var korrekt at tjekke koden igen, og jeg tjekkede ID'erne og attributterne for alle kontroller på siden og fandt stadig ikke problemet. Senere fandt jeg ud af, at det var dette, der skete:

Forekomstbetingelser:
1. Der er skjulte kontroller på skærmen.
2. Flere Gridview-bindinger.

3. Indlejret i flere former.
Årsager til forekomsten:
. .NET genererer et __EVENTVALIDATION skjult felt på den endelige side baseret på outputelementerne på siden. En simpel test blev udført. Opret en <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> og opret den tilsvarende Click-hændelseshåndter. Kør programmet og svar korrekt på begivenheden. Sæt derefter btnSubmit.Visable=false og tilføj manuelt <input type="submit" name="btnSubmit" value="Submit" /> på siden. Kør programmet, og en undtagelse vil dukke op sammen med indholdet EnableEventValidify. Sæt <@Page EnableEventValidation="false" > kør programmet igen for at svare korrekt på hændelsen. Ved at observere indholdet af de to __EVENTVALIDATION før og efter, kan man opdage, at de er forskellige. Med hensyn til undtagelsen, der forekommer, kan det antages at btnSubmit ikke er inkluderet i outputtet, men når det indsendes til baggrunden, er der tilsvarende indhold, som er inkonsistent, så i tilfælde af eventverifikation aktiveret. .NET kaster en undtagelse.

Løsning 1:
Page_Load(objektafsender, EventArgs e)
{
    hvis (! Page.IsPostBack)
    {
        bind data;
    }
}
Løsning 2:
<pages enableEventValidation="false"/>

1. Tilføj EnableEventValidation="false" til <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> af siden. (Først og fremmest)

2. Gå igennem web.config
<system.web>
<pages enableEventValidation="false"/>

3. Det er Formindløsning, en side kan kun have én Form, som kan løses ved nøje at tjekke koden.

4. Hvis siden indeholder kontroller som DropDownList eller ListBox, kan det skyldes følgende årsager:

4.1 Brug af ajax i dropdown-menuen findes ofte i provins- og bylinkagemenuen, hvilket kan skyldes, at den oprindelige itemværdi i dropdown-menuen er tildelt aspx-siden, og fejlen opstår, når begivenheden postes, og den oprindelige itemværdi i dropdown-menuen slettes, og item-elementet tilføjes til den bundne begivenhed.
4.2 Årsagen er, at Value-egenskaben for ListItem i DropDownList-kontrollen indeholder kinesiske tegn. Bare ændr værdien til engelsk eller et tal. Det er bedst at tilføje følgende sætning i web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Fordi POSTBACK ikke er kodet i UTF-8, vil JAVAscrip at fjerne t blive betragtet som problematisk.
Bare ændr requestEncoding="utf-8" til det, men responseEncoding="utf-8" gør det ikke

5. Registrer dig til eventvalidering
Princippet er at lade asp.net registrere denne postback-værdi.
RegisterForEventValidation skal kaldes ved rendering.






Tidligere:Tianhe-2 blev forbudt at købe insidere: USA er misundelig på Kinas supercomputerkraft
Næste:Professionalisme "Karriereplanskabelon"
 Udlejer| Opslået på 22/04/2015 10.36.18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kopier kode


Opslået på 22/04/2015 10.40.46 |
Jeg er enig i punktet ovenpå, at EnableEventValidation="true" vil validere lokalt og forbruge CPU; EnableEventValidation="false" vil returnere servervalideringen og genindlæse siden.
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com