Pokud jde o použití ovládání Gridview na stejné stránce, zjistilo se, že server nemůže odpovědět na updaeting event, zdá se, že je to chybový alarm a pak se dotazuje na nějaké informace, a nyní je řešení shrnuto takto: Klikněte na aktualizační událost nemůže reagovat, protože parametr postback nebo callback je neplatný. Ověřování událostí je povoleno v konfiguraci s <pages enableEventValidation="true"/> nebo <%@ Page EnableEventValidation="true" %> na stránkách. Pro bezpečnostní účely tato funkce ověřuje, že parametry událostí postbacku nebo callbacku pocházejí ze serverové kontroly, která je původně vykreslila. Pokud jsou data platná a očekávaná, použijte Clientcrip k odstranění metody tManager.RegisterForEventValidation pro registraci zpětného nebo zpětného volání dat k ověření.
Popis: Během vykonávání aktuálního webového požadavku došlo k nezpracované výjimce. Zkontrolujte informace o stack trace pro podrobnosti o chybě a odkud ve vašem kódu chybu způsobila.
Podrobnosti o výjimek: System.ArgumentException: Neplatné parametry postbacku nebo callbacku. Ověřování událostí je povoleno v konfiguraci s < stránkami enableEventValidation="true"/> nebo <% @ Page EnableEventValidation="true" %> na stránkách. Pro bezpečnostní účely tato funkce ověřuje, že parametry události postbacku nebo callbacku pocházejí ze serverové kontroly, která je původně vykreslila. Pokud jsou data platná a očekávaná, použijte Clientcrip k odstranění metody tManager.RegisterForEventValidation pro registraci zpětného nebo zpětného volání dat k ověření. Po dlouhém zkoumání jsem žádný problém nenašel a bylo správné zkontrolovat kód znovu, zkontroloval jsem ID a atributy všech ovládacích prvků na stránce a stále jsem problém nenašel. Později jsem zjistil, že se stalo toto: Podmínky výskytu: 1. Na obrazovce jsou skryté ovládací prvky. 2. Více Gridview vazeb. 3. Vnořené do více forem. Příčiny výskytu: . .NET vygeneruje __EVENTVALIDATION skryté pole na konečné stránce na základě výstupních prvků na stránce. Byl proveden jednoduchý test. Vytvořte <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> a vytvořte odpovídající obslužník události Click. Spusť program a správně reagovat na událost. Poté nastavte btnSubmit.Visable=false a ručně přidejte <input type="submit" jméno="btnSubmit" value="Submit" /> na stránku. Spusťte program a objeví se výjimka s obsahem EnableEventValidation. Nastavte <@Page EnableEventValidation="false" > program znovu spusťte, aby správně reagoval na událost. Při pozorování obsahu obou __EVENTVALIDATION před a po nich lze zjistit, že jsou odlišné. Pokud jde o výjimku, která nastane, lze považovat za to, že btnSubmit není zahrnut ve výstupu, ale když je odeslán do pozadí, je tam odpovídající obsah, který je nekonzistentní, takže v případě ověření události je zapnuto. .NET vyhodí výjimku.
Řešení 1: Page_Load(odesílatel objektu, EventArgs e)
{ pokud (! Page.IsPostBack) { data vázat; }
} Řešení 2: <pages enableEventValidation="false"/> 1. Přidat EnableEventValidation="false" do <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Dědí="_Default" %> stránky. (Za prvé)
2. Projděte web.config <system.web> <pages enableEventValidation="false"/>
3. Je to vnoření formulářů, stránka může mít pouze jeden formulář, což lze vyřešit pečlivou kontrolou kódu.
4. Pokud stránka obsahuje ovládací prvky jako DropDownList nebo ListBox, může to být způsobeno následujícími důvody:
4.1 Použití ajax v rozbalovacím menu se běžně nachází v menu pro provinční a městské propojení, což může být způsobeno tím, že počáteční hodnota položky v rozbalovacím menu je přiřazena stránce aspx, chyba se zobrazí při zveřejnění události, počáteční hodnota položky v rozbalovacím menu je smazána a položka je přidána do vázané události. 4.2 Důvodem je, že vlastnost Value u položky SeznamPoložky v ovládání DropDownSeznam obsahuje čínské znaky. Stačí změnit hodnotu na angličtinu nebo na číslo. Nejlepší je přidat následující příkaz do web.config: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Protože POSTBACK není kódován v UTF-8, odstranění t pomocí JAVAscrip bude považováno za problematické. Stačí změnit requestEncoding="utf-8" na něj, ale responseEncoding="utf-8" ne
5. Zaregistrujte se pro ověření událostí Principem je nechat asp.net tuto hodnotu postbacku zaznamenat. RegistrForEventValidation musí být vyvolán při renderování.
|