Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 17049|Svar: 2

[ASP.NET] System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEven

[Kopiera länk]
Publicerad på 2015-04-21 15:56:12 | | |
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.






Föregående:Tianhe-2 förbjöds att köpa insiders: USA är avundsjuk på Kinas superdatorkraft
Nästa:Professionalism "Karriärplanmall"
 Hyresvärd| Publicerad på 2015-04-22 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kopiera koden


Publicerad på 2015-04-22 10:40:46 |
Jag håller med om poängen i övervåningen att EnableEventValidation="true" kommer att validera lokalt och förbruka CPU; EnableEventValidation="false" kommer att returnera servervalideringen och ladda om sidan.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com