När det gäller användningen av Gridview-kontrollen på samma sida har man funnit att uppdateringshändelsen inte kan besvaras av servern, det verkar som att dess fellarm sedan frågar viss information, och nu sammanfattas lösningen så här: Klicka på uppdateringshändelsen kan inte svara eftersom postback- eller callback-parametern är ogiltig. Händelsevalidering är aktiverad i konfigurationen med <sidor enableEventValidation="true"/> eller <%@ Page EnableEventValidation="true" %> på sidor. Av säkerhetsskäl verifierar denna funktion att parametrarna för postback- eller callback-händelserna härstammar från serverkontrollen som ursprungligen renderade dem. Om datan är giltig och förväntad, använd Clientscrip för att ta bort metoden tManager.RegisterForEventValidation för att registrera en postback- eller callback-data för validering.
Beskrivning: Ett ohanterat undantag inträffade under exekveringen av den aktuella webbförfrågan. Kontrollera stackspårningsinformationen för detaljer om felet och var det kom ifrån i din kod som orsakade felet.
Undantagsdetaljer: System.ArgumentUndantag: Ogiltiga postback- eller callback-parametrar. Eventvalidering är aktiverad i konfigurationen med < sidor enableEventValidation="true"/> eller <% @ Page EnableEventValidation="true" %> på sidor. Av säkerhetsskäl verifierar denna funktion att parametrarna för postback- eller callback-händelsen härstammar från serverkontrollen som ursprungligen renderade dem. Om datan är giltig och förväntad, använd Clientscrip för att ta bort metoden tManager.RegisterForEventValidation för att registrera en postback- eller callback-data för validering. Efter att ha tittat länge hittade jag inget problem, och det var korrekt att kolla koden igen, och jag kollade ID:n och attribut för alla kontroller på sidan och hittade fortfarande inte problemet. Senare fick jag reda på att det var så här som hände: Förekomstförhållanden: 1. Det finns dolda kontroller på skärmen. 2. Flera Gridview-bindningar. 3. Inbäddad i flera former. Orsaker till förekomsten: . .NET genererar ett __EVENTVALIDATION dolt fält på den slutliga sidan baserat på utdataelementen på sidan. Ett enkelt test gjordes. Skapa en <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> och skapa motsvarande Click-händelsehanterare. Kör programmet och svara korrekt på händelsen. Sätt sedan btnSubmit.Visable=false och lägg manuellt till <input type="submit" name="btnSubmit" value="Submit" /> på sidan. Kör programmet och ett undantag visas med innehållet EnableEventValidation. Ställ <@Page EnableEventValidation="false" > kör programmet igen för att svara korrekt på händelsen. När man observerar innehållet i de två __EVENTVALIDATION före och efter kan man se att de skiljer sig åt. När det gäller undantaget som uppstår kan man betrakta att btnSubmit inte ingår i utdatan, men när det skickas till bakgrunden finns motsvarande innehåll, vilket är inkonsekvent, så i fallet med händelseverifiering aktiverad. .NET kastar ett undantag.
Lösning 1: Page_Load(objektavsändare, EventArgs e)
{ om (! Page.IsPostBack) { binda data; }
} Lösning 2: <sidor enableEventValidation="false"/> 1. Lägg till EnableEventValidation="false" på <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> av sidan. (För det första)
2. Gå igenom web.config <system.web> <sidor enableEventValidation="false"/>
3. Det är Forminnesting, en sida kan bara ha ett formulär, vilket kan lösas genom att noggrant kontrollera koden.
4. Om sidan innehåller kontroller som DropDownList eller ListBox kan det orsakas av följande skäl:
4.1 Att använda ajax i rullgardinsmenyn finns ofta i provins- och stadslänkmenyn, vilket kan bero på att det initiala objektvärdet i rullgardinsmenyn tilldelas aspx-sidan, felet visas när händelsen publiceras, och det initiala objektvärdet i rullgardinsmenyn tas bort, och föremålsobjektet läggs till i den bundna händelsen. 4.2 Anledningen är att egenskapen Value för ListItem i DropDownList-kontrollen innehåller kinesiska tecken. Byt bara värdet till engelska eller ett nummer. Det är bäst att lägga till följande sats i web.config: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Eftersom POSTBACK inte är kodad i UTF-8 kommer JAVAscrip att ta bort t att anses problematiskt. Ändra bara requestEncoding="utf-8" till den, men responseEncoding="utf-8" gör det inte
5. Registrera dig för eventvalidering Principen är att låta asp.net registrera detta postback-värde. RegisterForEventValidation måste anropas vid rendering.
|