Mis puudutab Gridview juhtimise kasutamist samal lehel, siis selgub, et uuendussündmusele ei saa server reageerida, tundub, et see annab veaalarmi ja seejärel küsib mõningast teavet, ning nüüd on lahendus kokku võetud järgmiselt: Klõpsates, uuendussündmus ei saa vastata, sest postback või callback parameeter on kehtetu. Sündmuste valideerimine on lubatud konfiguratsioonis, kus <lehed enableEventValidation="true"/> või <%@ Page EnableEventValidation="true" %> lehtedel. Turvalisuse huvides kontrollib see funktsioon, et postback- või callback-sündmuste parameetrid pärinevad serveri juhtimisest, mis need algselt renderdas. Kui andmed on kehtivad ja oodatud, kasuta Clientcrip'i, et eemaldada tManager.RegisterForEventValidation meetod postback- või callback-andmete registreerimiseks valideerimiseks.
Kirjeldus: Praeguse veebipäringu täitmisel tekkis käsitlemata erand. Kontrolli virna jälgimise infot, et saada täpsemat infot vea kohta ja kust see sinu koodis tuli, mis vea põhjustas.
Erandi andmed: System.ArgumentException: Kehtetud tagasisaatmise või tagasikõne parameetrid. Sündmuste valideerimine on lubatud konfiguratsioonis, kus < lehekülgedel enableEventValidation="true"/> või <% @ Page EnableEventValidation="true" %> lehtedel. Turvalisuse huvides kontrollib see funktsioon, et postback- või callback-sündmuse parameetrid pärinevad serveri juhtimisest, mis need algselt renderdas. Kui andmed on kehtivad ja oodatud, kasuta Clientcrip'i, et eemaldada tManager.RegisterForEventValidation meetod postback- või callback-andmete registreerimiseks valideerimiseks. Pärast pikka uurimist ei leidnud ma probleemi ja oli õige koodi uuesti kontrollida, kontrollisin kõigi lehe juhtnuppude ID-sid ja atribuute, kuid ikka ei leidnud probleemi. Hiljem sain teada, et juhtus nii: Esinemise tingimused: 1. Ekraanil on peidetud juhtnupud. 2. Mitmed Gridview sidumised. 3. Mitmes vormis pesastunud. Esinemise põhjused: . .NET genereerib lõpulehel __EVENTVALIDATION peidetud välja, mis põhineb lehe väljundelementidel. Tehti lihtne test. Loo <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> ja loo vastav Click sündmuse haldur. Käivita programm ja reageeri sündmusele õigesti. Seejärel määra btnSubmit.Visable=false ja lisa käsitsi <input type="submit" name="btnSubmit" value="Submit" /> lehele. Kui programm käivitada, ilmub erand koos EnableEventValidationi sisuga. Sea <@Page EnableEventValidation="false" > käivita programm uuesti, et sündmusele õigesti reageerida. Vaadates kahe __EVENTVALIDATION enne ja pärast sisu võib näha, et need on erinevad. Mis puudutab erandit, siis võib eeldada, et btnSubmit ei ole väljundis kaasatud, kuid kui see esitatakse taustale, on vastav sisu, mis on ebajärjekindel, seega sündmuse verifitseerimise puhul lubatud. .NET teeb erandi.
Lahendus 1: Page_Load(objekti saatja, EventArgs e)
{ kui (! Page.IsPostBack) { andmete sidumine; }
} Lahendus 2: <lehed enableEventValidation="false"/> 1. Lisa EnableEventValidation="false" lehe <%@ keelele="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" pärib ="_Default" %> lehelt. (Esiteks)
2. Mine läbi web.config <system.web> <lehed enableEventValidation="false"/>
3. See on vormide pesastus, lehel võib olla ainult üks vorm, mida saab lahendada koodi hoolikalt kontrollides.
4. Kui lehel on kontrollid nagu DropDownList või ListBox, võivad selle põhjused olla järgmised:
4.1 Ajaxi kasutamine rippmenüüs on tavaliselt leitav provintsi ja linna seostemenüüs, mis võib olla tingitud sellest, et rippmenüü algväärtus määratakse aspx lehele ning viga ilmub sündmuse postitamisel, eemaldatakse rippmenüü algväärtus ja eseme ese lisatakse seotud sündmusele. 4.2 Põhjus on selles, et DropDownListi kontrolli ListItem omadus sisaldab hiina märke. Lihtsalt muuda väärtus inglise või numbri peale. Parim on lisada web.config lehel järgmine väide: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Kuna POSTBACK ei ole UTF-8-s kodeeritud, loetakse JAVAscrip-i t eemaldamine problemaatiliseks. Lihtsalt muuda requestEncoding="utf-8" selleks, aga responseEncoding="utf-8" ei muuda
5. Registreeru ürituse valideerimiseks Põhimõte on lasta asp.net salvestada see postback-väärtus. RegisterForEventValidation tuleb renderdamisel kutsuda.
|