Čo sa týka použitia ovládania Gridview na tej istej stránke, zistilo sa, že server nemôže odpovedať na updaeting udalosť, zdá sa, že ide o chybový alarm a potom sa pýta na nejaké informácie, a teraz je riešenie zhrnuté nasledovne: Kliknite na aktualizačnú udalosť nemôže reagovať, pretože parameter postback alebo callback je neplatný. Overovanie udalostí je povolené v konfigurácii s <pages enableEventValidation="true"/> alebo <%@ Page EnableEventValidation="true" %> na stránkach. Pre bezpečnostné účely táto funkcia overuje, či parametre udalostí postbacku alebo callbacku pochádzajú zo serverovej kontroly, ktorá ich pôvodne vykreslila. Ak sú dáta platné a očakávané, použite Clientcrip na odstránenie metódy tManager.RegisterForEventValidation na registráciu postback alebo callback dát na validáciu.
Popis: Počas vykonávania aktuálneho webového požiadavku nastala nespracovaná výnimka. Skontrolujte informácie o stack trace pre podrobnosti o chybe a o tom, odkiaľ v kóde vznikla.
Detaily výnimky: System.ArgumentException: Neplatné parametre postbacku alebo callbacku. Overovanie udalostí je povolené v konfigurácii s < stránky enableEventValidation="true"/> alebo <% @ Page EnableEventValidation="true" %> na stránkach. Pre bezpečnostné účely táto funkcia overuje, či parametre postback alebo callback udalosti pochádzajú od serverovej kontroly, ktorá ich pôvodne vykreslila. Ak sú dáta platné a očakávané, použite Clientcrip na odstránenie metódy tManager.RegisterForEventValidation na registráciu postback alebo callback dát na validáciu. Po dlhom sledovaní som nenašiel žiadny problém, bolo správne skontrolovať kód znova, skontroloval som ID a atribúty všetkých ovládacích prvkov na stránke a stále som problém nenašiel. Neskôr som zistil, že sa stalo toto: Podmienky výskytu: 1. Na obrazovke sú skryté ovládacie prvky. 2. Viacnásobné Gridview väzby. 3. Vnorené vo viacerých formách. Príčiny výskytu: . .NET vygeneruje __EVENTVALIDATION skryté pole na konečnej stránke na základe výstupných prvkov na stránke. Bol vykonaný jednoduchý test. Vytvorte <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> a vytvorte príslušný Click event handler. Spustiť program a správne reagovať na udalosť. Potom nastavte btnSubmit.Visable=false a manuálne pridajte <input type="submit" meno="btnSubmit" value="Submit" /> na stránku. Spustíte program a objaví sa výnimka s obsahom EnableEventValidation. Nastavte <@Page EnableEventValidation="false" > program spustite znova, aby správne reagoval na udalosť. Pozorovaním obsahu oboch __EVENTVALIDATION pred a potom je možné zistiť, že sú odlišné. Čo sa týka výnimky, ktorá nastane, možno považovať za to, že btnSubmit nie je zahrnutý vo výstupe, ale keď je odoslaný do pozadia, je tam zodpovedajúci obsah, ktorý je nekonzistentný, takže v prípade overovania udalostí je overenie zapnuté. .NET ponúka výnimku.
Riešenie 1: Page_Load(odosielateľ objektu, EventArgs e)
{ ak (! Page.IsPostBack) { pripnúť dáta; }
} Riešenie 2: <pages enableEventValidation="false"/> 1. Pridaj EnableEventValidation="false" do <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> stránky. (V prvom rade)
2. Prejdite web.config <system.web> <pages enableEventValidation="false"/>
3. Ide o vnorovanie formulárov, stránka môže mať len jeden formulár, ktorý sa dá vyriešiť dôkladnou kontrolou kódu.
4. Ak stránka obsahuje ovládacie prvky ako Rozbaľovací zoznam alebo ListBox, môže to byť spôsobené nasledujúcimi dôvodmi:
4.1 Použitie ajax v rozbaľovacom menu sa bežne nachádza v menu prepojenia provincií a miest, čo môže byť spôsobené tým, že počiatočná hodnota položky v rozbaľovacom menu je priradená stránke aspx a chyba sa zobrazí pri zverejnení udalosti, pričom počiatočná hodnota položky v rozbaľovacom menu sa vymaže a položka sa pridá do viazanej udalosti. 4.2 Dôvodom je, že vlastnosť Value v ListItem v ovládacom režime Rozbaľovací zoznam obsahuje čínske znaky. Jednoducho zmeňte hodnotu na angličtinu alebo na číslo. Najlepšie je pridať nasledujúce vyhlásenie do web.config: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Keďže POSTBACK nie je kódovaný v UTF-8, odstránenie t pomocou JAVAscrip bude považované za problematické. Stačí zmeniť requestEncoding="utf-8" na to, ale responseEncoding="utf-8" nie
5. Zaregistrujte sa na overenie udalosti Princíp je nechať asp.net zaznamenať túto hodnotu postbacku. RegisterForEventValidation musí byť volaný pri renderovaní.
|