A Gridview vezérlő használatával kapcsolatban ugyanazon az oldalon megállapították, hogy a frissítési eseményre a szerver nem válaszol, úgy tűnik, hibariasztás jelentkezik, majd információt kér, és most a megoldás a következőképpen összefoglalható: Kattintás, a frissítési esemény nem válaszol, mert a visszaküldés vagy visszahívás paramétere érvénytelen. Az eseményellenőrzés engedélyezett a konfigurációban <pages enableEventValidation="true"/> vagy <%@ Page EnableEventValidation="true" %> oldalakon. Biztonsági szempontból ez a funkció igazolja, hogy a visszaküldés vagy visszahívás eseményeinek paraméterei az eredetileg megjelenítő szervervezérlésből származnak. Ha az adatok érvényesek és elvártak, használd a Clientcrip módszert a tManager.RegisterForEventValidation módszer eltávolítására, hogy visszaküldési vagy visszahívásos adatot regisztrálj az ellenőrzéshez.
Leírás: Kezeletlen kivétel történt a jelenlegi webes kérés végrehajtása során. Nézd meg a stack trace adatait a hibáról és arról, honnan jött a kódodban, ami a hibát okozta.
Kivétel részletei: System.ArgumentException: Érvénytelen visszaküldés vagy visszahívás paraméterek. Az eseményellenőrzés engedélyezett a konfigurációban, < oldal enableEventValidation="true"/> vagy <% @ Page EnableEventValidation="true" %> oldalakon. Biztonsági okokból ez a funkció igazolja, hogy a visszaküldés vagy visszahívás esemény paraméterei az eredeti szervervezérlésből származnak. Ha az adatok érvényesek és elvártak, használd a Clientcrip módszert a tManager.RegisterForEventValidation módszer eltávolítására, hogy visszaküldési vagy visszahívásos adatot regisztrálj az ellenőrzéshez. Hosszú vizsgálat után nem találtam problémát, és helyes volt újra ellenőrizni a kódot, és megnéztem az összes vezérlő azonosítóját és attribútumát az oldalon, de még mindig nem találtam a problémát. Később megtudtam, hogy ez történt: Előfordulási körülmények: 1. Rejtett vezérlők vannak a képernyőn. 2. Többszörös Gridview kötés. 3. Többféle formában fészkel. Előfordulási okok: . A .NET az utolsó oldalon a kimeneti elemek alapján __EVENTVALIDATION rejtett mezőt generál. Egy egyszerű tesztet végeztek. Hozz létre egy <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" />, és hozd létre a megfelelő Click eseménykezelőt. Indítsd a programot, és reagálj helyesen az eseményre. Ezután állítsd be btnSubmit.Visable=false szintet, és manuálisan add hozzá <input type="submit" name="btnSubmit" value="Submit" /> az oldalon. Ha futtatod a programot, kivétel jelenik meg az EnableEventValidation tartalommal. Állítsuk be <@Page EnableEventValidation="false" > újra futtasd a programot, hogy helyesen reagáljon az eseményre. A két előtti és utáni __EVENTVALIDATION tartalmának megfigyelése megállapítható, hogy különböznek. A kivétel tekintetében úgy tekinthető, hogy a btnSubmit nincs benne a kimenetben, de amikor a háttérbe kerül, akkor van hozzá tartozó tartalom, ami következetlen, így az esemény ellenőrzése engedélyezve van. A .NET kivételt ad.
1. megoldás: Page_Load(objektumküldő, EventArgs e)
{ ha (! Page.IsPostBack) { adatkötés; }
} 2. megoldás: <pages enableEventValidation="false"/> 1. Add hozzá az EnableEventValidation="false" értéket az <%@ oldalnyelvhez="c#" AutoEventWireup="true" CodeFile="Default.aspx.cs" örököl="_Default" %> az oldalon. (Először is)
2. Nézd át a web.config oldalt <system.web> <pages enableEventValidation="false"/>
3. Ez a Form Nesting, egy oldalnak csak egy Űrlapja lehet, amit gondos kódellenőrzéssel lehet megoldani.
4. Ha az oldal tartalmaz olyan vezérlőket, mint a DropDownList vagy ListBox, az alábbi okokból lehet szó:
4.1 Az ajax használata a legördülő menüben gyakran megtalálható a tartományi és városi összekapcsolási menüben, ami azért lehet ok, mert a legördülő menü eredeti tárgyértéke az aspx oldalhoz van rendelve, és a hiba megjelenik az esemény közzétételekor, a legördülő menü eredeti elemértékét töröljük, és az elem hozzáadódik a kötött eseményhez. 4.2 Ennek oka, hogy a DropDownList vezérlő ListItem érték tulajdonsága kínai karaktereket tartalmaz. Csak változtasd az értéket angolra vagy egy számra. A legjobb a következő állítást hozzáadni a web.config oldalon: <globalizációs kérésEncoding="utf-8" válaszEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Mivel a POSTBACK nincs kódolva az UTF-8-ban, a JAVAscrip t eltávolítása problémásnak minősül. Csak változtasd meg az requestEncoding="utf-8" betűt, de a responseEncoding="utf-8" nem
5. Regisztráció az esemény validációjára Az elv az, hogy asp.net rögzítse ezt a visszaküldési értéket. A RegisterForEventValidation-t a render során kell behívni.
|