Når det gjelder bruk av Gridview-kontrollen på samme side, har det blitt funnet at oppdateringshendelsen ikke kan besvares av serveren, det ser ut til at det er feilalarm og deretter spør etter informasjon, og nå oppsummeres løsningen slik: Klikk på oppdateringshendelsen kan ikke svare fordi postback- eller callback-parameteren er ugyldig. Hendelsesvalidering er aktivert i konfigurasjonen med <pages enableEventValidation="true"/> eller <%@ Page EnableEventValidation="true" %> på sider. For sikkerhetsformål verifiserer denne funksjonen at parameterne for postback- eller callback-hendelsene stammer fra serverkontrollen som opprinnelig gjenga dem. Hvis dataene er gyldige og forventede, bruk Clientscrip for å fjerne metoden tManager.RegisterForEventValidation for å registrere en postback- eller callback-data for validering.
Beskrivelse: Et unhandled-unntak oppsto under kjøringen av den nåværende webforespørselen. Sjekk stakksporingsinformasjonen for detaljer om feilen og hvor den kom fra i koden som forårsaket feilen.
Unntaksdetaljer: System.ArgumentUnntak: Ugyldige postback- eller callback-parametere. Hendelsesvalidering er aktivert i konfigurasjonen med < sider enableEventValidation="true"/> eller <% @ Page EnableEventValidation="true" %> på sider. For sikkerhetsformål verifiserer denne funksjonen at parameterne for postback- eller callback-hendelsen stammer fra serverkontrollen som opprinnelig gjenga dem. Hvis dataene er gyldige og forventede, bruk Clientscrip for å fjerne metoden tManager.RegisterForEventValidation for å registrere en postback- eller callback-data for validering. Etter å ha sett på det lenge, fant jeg ikke noe problem, og det var riktig å sjekke koden igjen, og jeg sjekket ID-ene og attributtene til alle kontrollene på siden og fant fortsatt ikke problemet. Senere fant jeg ut at dette var det som skjedde: Forekomstbetingelser: 1. Det er skjulte kontroller på skjermen. 2. Flere Gridview-bindinger. 3. Nestet i flere former. Årsaker til forekomst: . .NET genererer et __EVENTVALIDATION skjult felt på den siste siden basert på utdataelementene på siden. En enkel test ble gjort. Lag en <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> og lag den tilsvarende Click-hendelseshåndtereren. Kjør programmet og svar riktig på hendelsen. Sett deretter btnSubmit.Visable=false og legg manuelt til <input type="submit" name="btnSubmit" value="Submit" /> på siden. Kjør programmet, og et unntak vil dukke opp sammen med innholdet EnableEventValidation. Sett <@Page EnableEventValidation="false" > kjør programmet på nytt for å svare korrekt på hendelsen. Ved å observere innholdet i de to __EVENTVALIDATION før og etter, kan man se at de er forskjellige. Når det gjelder unntaket som oppstår, kan det anses at btnSubmit ikke er inkludert i utdataen, men når det sendes til bakgrunnen, finnes det tilsvarende innhold, som er inkonsistent, så i tilfelle hendelsesverifisering aktivert. .NET kaster et unntak.
Løsning 1: Page_Load(objektavsender, EventArgs e)
{ hvis (! Page.IsPostBack) { binde data; }
} Løsning 2: <pages enableEventValidation="false"/> 1. Legg til EnableEventValidation="false" på <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> av siden. (Først og fremst)
2. Gå gjennom web.config <system.web> <pages enableEventValidation="false"/>
3. Det er Form-nevesting, en side kan bare ha ett skjema, som kan løses ved å nøye sjekke koden.
4. Hvis siden inneholder kontroller som DropDownList eller ListBox, kan det skyldes følgende årsaker:
4.1 Å bruke ajax i nedtrekksmenyen finnes ofte i provins- og bykoblingsmenyen, noe som kan skyldes at den opprinnelige elementverdien i nedtrekksmenyen er tildelt aspx-siden, og feilmeldingen oppstår når hendelsen legges ut, og den opprinnelige elementverdien i nedtrekksmenyen slettes, og elementet legges til den bundne hendelsen. 4.2 Årsaken er at Value-egenskapen til ListItem i DropDownList-kontrollen inneholder kinesiske tegn. Bare endre verdien til engelsk eller et tall. Det er best å legge til følgende setning 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 fjerning av t i JAVAscrip bli ansett som problematisk. Bare endre requestEncoding="utf-8" til den, men responseEncoding="utf-8" gjør det ikke
5. Registrer deg for eventvalidering Prinsippet er å la asp.net registrere denne postback-verdien. RegisterForEventValidation må kalles ved rendering.
|