See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 17049|Vastuse: 2

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

[Kopeeri link]
Postitatud 21.04.2015 15:56:12 | | |
Mis puudutab Gridview juhtimise kasutamist samal lehel, siis selgub, et uuendussündmusele ei saa server reageerida, tundub, et see annab veaalarmi ja seejärel küsib mõningast teavet, ning nüüd on lahendus kokku võetud järgmiselt: Klõpsates, uuendussündmus ei saa vastata, sest postback või callback parameeter on kehtetu. Sündmuste valideerimine on lubatud konfiguratsioonis, kus <lehed enableEventValidation="true"/> või <%@ Page EnableEventValidation="true" %> lehtedel. Turvalisuse huvides kontrollib see funktsioon, et postback- või callback-sündmuste parameetrid pärinevad serveri juhtimisest, mis need algselt renderdas. Kui andmed on kehtivad ja oodatud, kasuta Clientcrip'i, et eemaldada tManager.RegisterForEventValidation meetod postback- või callback-andmete registreerimiseks valideerimiseks.
Kirjeldus: Praeguse veebipäringu täitmisel tekkis käsitlemata erand. Kontrolli virna jälgimise infot, et saada täpsemat infot vea kohta ja kust see sinu koodis tuli, mis vea põhjustas.
         Erandi andmed: System.ArgumentException: Kehtetud tagasisaatmise või tagasikõne parameetrid. Sündmuste valideerimine on lubatud konfiguratsioonis, kus < lehekülgedel enableEventValidation="true"/> või <% @ Page EnableEventValidation="true" %> lehtedel. Turvalisuse huvides kontrollib see funktsioon, et postback- või callback-sündmuse parameetrid pärinevad serveri juhtimisest, mis need algselt renderdas. Kui andmed on kehtivad ja oodatud, kasuta Clientcrip'i, et eemaldada tManager.RegisterForEventValidation meetod postback- või callback-andmete registreerimiseks valideerimiseks.

       Pärast pikka uurimist ei leidnud ma probleemi ja oli õige koodi uuesti kontrollida, kontrollisin kõigi lehe juhtnuppude ID-sid ja atribuute, kuid ikka ei leidnud probleemi. Hiljem sain teada, et juhtus nii:

Esinemise tingimused:
1. Ekraanil on peidetud juhtnupud.
2. Mitmed Gridview sidumised.

3. Mitmes vormis pesastunud.
Esinemise põhjused:
. .NET genereerib lõpulehel __EVENTVALIDATION peidetud välja, mis põhineb lehe väljundelementidel. Tehti lihtne test. Loo <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> ja loo vastav Click sündmuse haldur. Käivita programm ja reageeri sündmusele õigesti. Seejärel määra btnSubmit.Visable=false ja lisa käsitsi <input type="submit" name="btnSubmit" value="Submit" /> lehele. Kui programm käivitada, ilmub erand koos EnableEventValidationi sisuga. Sea <@Page EnableEventValidation="false" > käivita programm uuesti, et sündmusele õigesti reageerida. Vaadates kahe __EVENTVALIDATION enne ja pärast sisu võib näha, et need on erinevad. Mis puudutab erandit, siis võib eeldada, et btnSubmit ei ole väljundis kaasatud, kuid kui see esitatakse taustale, on vastav sisu, mis on ebajärjekindel, seega sündmuse verifitseerimise puhul lubatud. .NET teeb erandi.

Lahendus 1:
Page_Load(objekti saatja, EventArgs e)
{
    kui (! Page.IsPostBack)
    {
        andmete sidumine;
    }
}
Lahendus 2:
<lehed enableEventValidation="false"/>

1. Lisa EnableEventValidation="false" lehe <%@ keelele="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" pärib ="_Default" %> lehelt. (Esiteks)

2. Mine läbi web.config
<system.web>
<lehed enableEventValidation="false"/>

3. See on vormide pesastus, lehel võib olla ainult üks vorm, mida saab lahendada koodi hoolikalt kontrollides.

4. Kui lehel on kontrollid nagu DropDownList või ListBox, võivad selle põhjused olla järgmised:

4.1 Ajaxi kasutamine rippmenüüs on tavaliselt leitav provintsi ja linna seostemenüüs, mis võib olla tingitud sellest, et rippmenüü algväärtus määratakse aspx lehele ning viga ilmub sündmuse postitamisel, eemaldatakse rippmenüü algväärtus ja eseme ese lisatakse seotud sündmusele.
4.2 Põhjus on selles, et DropDownListi kontrolli ListItem omadus sisaldab hiina märke. Lihtsalt muuda väärtus inglise või numbri peale. Parim on lisada web.config lehel järgmine väide:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Kuna POSTBACK ei ole UTF-8-s kodeeritud, loetakse JAVAscrip-i t eemaldamine problemaatiliseks.
Lihtsalt muuda requestEncoding="utf-8" selleks, aga responseEncoding="utf-8" ei muuda

5. Registreeru ürituse valideerimiseks
Põhimõte on lasta asp.net salvestada see postback-väärtus.
RegisterForEventValidation tuleb renderdamisel kutsuda.






Eelmine:Tianhe-2-l keelati siseringi kasutajate ostmine: Ameerika Ühendriigid on kade Hiina superarvutusvõimsuse üle
Järgmine:Professionaalsus "Karjääriplaani mall"
 Üürileandja| Postitatud 22.04.2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kopeeri kood


Postitatud 22.04.2015 10:40:46 |
Nõustun ülemise korruse punktiga, et EnableEventValidation="true" valideerib kohapeal ja kasutab protsessorit; EnableEventValidation="false" tagastab serveri valideerimise ja laadib lehe uuesti.
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com