Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 17049|Răspunde: 2

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

[Copiază linkul]
Postat pe 21.04.2015 15:56:12 | | |
Referitor la utilizarea controlului Gridview pe aceeași pagină, s-a constatat că evenimentul de actualizare nu poate fi răspuns de către server, pare că alarma sa de eroare și apoi interogă unele informații, iar acum soluția este rezumată astfel: Apasă pe evenimentul de actualizare nu poate răspunde deoarece parametrul postback sau callback este invalid. Validarea evenimentului este activată în configurație cu <pages enableEventValidation="true"/> sau <%@ Page EnableEventValidation="true" %> pe pagini. Din motive de securitate, această funcție verifică dacă parametrii evenimentelor de postback sau callback provin de la controlul serverului care le-a redat inițial. Dacă datele sunt valide și așteptate, folosește Clientscrip pentru a elimina metoda tManager.RegisterForEventValidation pentru a înregistra o dată postback sau callback pentru validare.
Descriere: O excepție negestionată a avut loc în timpul executării cererii web curente. Verifică informațiile despre stack trace pentru detalii despre eroare și de unde a venit în codul tău care a cauzat eroarea.
         Detalii excepție: System.ArgumentException: Parametri invalidi de postback sau callback. Validarea evenimentelor este activată în configurație cu < pagini enableEventValidation="true"/> sau <% @ Page EnableEventValidation="true" %> pe pagini. Din motive de securitate, această funcție verifică că parametrii evenimentului de postback sau callback provin de la controlul serverului care i-a redat inițial. Dacă datele sunt valide și așteptate, folosește Clientscrip pentru a elimina metoda tManager.RegisterForEventValidation pentru a înregistra o dată postback sau callback pentru validare.

       După ce m-am uitat mult timp, nu am găsit nicio problemă și a fost corect să verific din nou codul, am verificat ID-urile și atributele tuturor controalelor de pe pagină și tot nu am găsit problema. Mai târziu, am aflat că asta s-a întâmplat:

Condiții de apariție:
1. Există controale ascunse pe ecran.
2. Mai multe legături Gridview.

3. Îmbrăcați în mai multe forme.
Cauze ale apariției:
. .NET generează un câmp ascuns __EVENTVALIDATION în pagina finală, bazat pe elementele de ieșire din pagină. A fost făcut un test simplu. Creează un <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> și creează handler-ul de evenimente Click corespunzător. Rulează programul și răspunde corect la eveniment. Apoi setează btnSubmit.Visable=false și adaugă manual <input type="submit" name="btnSubmit" value="Submit" /> pe pagină. Rulează programul și o excepție va apărea împreună cu conținutul EnableEventValidation. Setează <@Page EnableEventValidation="false" > rulează din nou programul pentru a răspunde corect la eveniment. Observând conținutul celor două __EVENTVALIDATION înainte și după, se poate descoperi că sunt diferite. Referitor la excepția care apare, se poate considera că btnSubmit nu este inclus în rezultat, dar când este trimis în fundal, există conținut corespunzător, care este inconsistent, deci în cazul verificării evenimentelor este activat. .NET face o excepție.

Soluția 1:
Page_Load(obiect emițător, EventArgs e)
{
    dacă (! Page.IsPostBack)
    {
        legarea datelor;
    }
}
Soluția 2:
<pagini enableEventValidation="false"/>

1. Adaugă EnableEventValidation="false" la limbajul paginii <%@ "C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Moștenește "_Default" %> din pagină. (În primul rând)

2. Parcurge web.config
<system.web>
<pagini enableEventValidation="false"/>

3. Este un Form nesting, o pagină poate avea doar un singur Form, care poate fi rezolvat prin verificarea atentă a codului.

4. Dacă pagina conține controale precum DropDownList sau ListBox, acest lucru poate fi cauzat de următoarele motive:

4.1 Utilizarea ajax în meniul derulant se găsește frecvent în meniul de legătură între provincii și orașe, ceea ce poate fi cauzat de faptul că valoarea inițială a articolului din meniul derulant este atribuită paginii aspx, iar eroarea apare când evenimentul este postat, valoarea inițială a elementului din meniul derulant este ștearsă, iar elementul este adăugat la evenimentul asociat.
4.2 Motivul este că proprietatea Value a ListItem a controlului DropDownList conține caractere chinezești. Doar schimbă valoarea în engleză sau un număr. Este cel mai bine să adaugi următoarea afirmație în web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Deoarece POSTBACK nu este codificat în UTF-8, eliminarea lui t a JAVAscrip va fi considerată problematică.
Doar schimbă requestEncoding="utf-8" în ea, dar responseEncoding="utf-8" nu

5. Înregistrarea pentru validarea evenimentului
Principiul este să asp.net lăsăm să înregistreze această valoare de întoarcere.
RegisterForEventValidation trebuie apelat la randare.






Precedent:Tianhe-2 a fost interzis să cumpere persoane din interior: Statele Unite sunt invidioase pe puterea de supercalcul a Chinei
Următor:Profesionalism "Șablon de Plan de Carieră"
 Proprietarul| Postat pe 22.04.2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Cod de copiere


Postat pe 22.04.2015 10:40:46 |
Sunt de acord cu punctul de mai sus că EnableEventValidation="true" va valida local și va consuma CPU; EnableEventValidation="false" va returna validarea serverului și va reîncărca pagina.
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com