Glede uporabe kontrolnika Gridview na isti strani je bilo ugotovljeno, da strežnik ne more odgovoriti na dogodek updaeting, zdi se, da gre za alarm napake in nato poišče nekaj informacij, rešitev pa je zdaj povzeta takole: Kliknite na dogodek posodobitve ne more odgovoriti, ker je parameter postback ali callback neveljaven. Preverjanje dogodkov je omogočeno v konfiguraciji z <pages enableEventValidation="true"/> ali <%@ Page EnableEventValidation="true" %> na straneh. Za varnostne namene ta funkcija preverja, ali parametri dogodkov postbacka ali callbacka izvirajo iz strežniškega nadzora, ki jih je prvotno prikazal. Če so podatki veljavni in pričakovani, uporabite Clientcrip za odstranitev metode tManager.RegisterForEventValidation za registracijo podatkov o povratnem ali povratnem klicu za validacijo.
Opis: Med izvajanjem trenutne spletne zahteve je prišlo do neobdelane izjeme. Preverite informacije o sledenju sklada za podrobnosti o napaki in od kod je nastala v vaši kodi, ki je povzročila napako.
Podrobnosti izjeme: System.ArgumentException: Neveljavni parametri za objavo ali povratni klic. Validacija dogodkov je omogočena v konfiguraciji z < stranmi enableEventValidation="true"/> ali <% @ Page EnableEventValidation="true" %> na straneh. Za varnostne namene ta funkcija preverja, ali parametri dogodka postback ali callback izvirajo iz strežniškega nadzora, ki jih je prvotno upodobil. Če so podatki veljavni in pričakovani, uporabite Clientcrip za odstranitev metode tManager.RegisterForEventValidation za registracijo podatkov o povratnem ali povratnem klicu za validacijo. Po dolgem pregledu nisem našel nobene težave, pravilno je bilo ponovno preveriti kodo, preveril sem ID-je in atribute vseh kontrol na strani in še vedno nisem našel težave. Kasneje sem izvedel, da se je zgodilo naslednje: Pogoji nastanka: 1. Na zaslonu so skriti kontrolni elementi. 2. Več vezav za Gridview. 3. Gnezdena v več oblikah. Vzroki pojava: . .NET na končni strani ustvari __EVENTVALIDATION skrito polje na podlagi izhodnih elementov na strani. Opravljen je bil preprost test. Ustvarite <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> in ustvarite ustrezni upravljalnik Click dogodkov. Zaženi program in pravilno reagiraj na dogodek. Nato nastavi btnSubmit.Visable=false in ročno dodaj <vhodni tip="submit" ime="btnSubmit" vrednost="Submit" /> na stran. Zaženite program in pojavi se izjema z vsebino EnableEventValidation. Nastavite <@Page EnableEventValidation="false" > program ponovno zaženete, da pravilno odgovorite na dogodek. Če opazujemo vsebino obeh __EVENTVALIDATION pred in po tem, lahko ugotovimo, da sta različni. Glede izjeme, ki se pojavi, lahko štejemo, da btnSubmit ni vključen v izhod, vendar ko je poslan v ozadje, je prisotna ustrezna vsebina, ki je nedosledna, zato je v primeru preverjanja dogodkov omogočena. .NET vrže izjemo.
Rešitev 1: Page_Load(object sender, EventArgs e)
{ če (! Page.IsPostBack) { vezavo podatkov; }
} Rešitev 2: <strani enableEventValidation="false"/> 1. Dodaj EnableEventValidation="false" v <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> strani. (Najprej)
2. Preglejte web.config <system.web> <strani enableEventValidation="false"/>
3. Gre za gnezdenje obrazcev, stran lahko vsebuje le eno obliko, kar je mogoče rešiti s skrbnim preverjanjem kode.
4. Če stran vsebuje kontrole, kot sta Spustni seznam ali Seznam, je to lahko posledica naslednjih razlogov:
4.1 Uporaba AJAX-a v spustnem meniju je pogosto prisotna v meniju za povezovanje pokrajin in mest, kar je lahko posledica dejstva, da je začetna vrednost elementa spustnega menija dodeljena strani aspx, napaka pa se pojavi ob objavi dogodka, začetna vrednost položke v spustnem meniju pa se izbriše in element elementa se doda v vezani dogodek. 4.2 Razlog je, da lastnost Value v ListItem v kontrolniku DropDownList vsebuje kitajske znake. Samo spremeni vrednost v angleščino ali številko. Najbolje je, da v web.config dodate naslednjo izjavo: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Ker POSTBACK ni kodiran v UTF-8, bo odstranjevanje t s pomočjo JAVAscrip obravnavano kot problematično. Samo spremeni requestEncoding="utf-8" v to, vendar responseEncoding="utf-8" ne spremeni
5. Registrirajte se za validacijo dogodkov Načelo je, da asp.net zabeleži to vrednost postbacka. RegisterForEventValidation je treba poklicati ob renderiranju.
|