Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 17049|Odpověď: 2

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

[Kopírovat odkaz]
Zveřejněno 21.04.2015 15:56:12 | | |
Pokud jde o použití ovládání Gridview na stejné stránce, zjistilo se, že server nemůže odpovědět na updaeting event, zdá se, že je to chybový alarm a pak se dotazuje na nějaké informace, a nyní je řešení shrnuto takto: Klikněte na aktualizační událost nemůže reagovat, protože parametr postback nebo callback je neplatný. Ověřování událostí je povoleno v konfiguraci s <pages enableEventValidation="true"/> nebo <%@ Page EnableEventValidation="true" %> na stránkách. Pro bezpečnostní účely tato funkce ověřuje, že parametry událostí postbacku nebo callbacku pocházejí ze serverové kontroly, která je původně vykreslila. Pokud jsou data platná a očekávaná, použijte Clientcrip k odstranění metody tManager.RegisterForEventValidation pro registraci zpětného nebo zpětného volání dat k ověření.
Popis: Během vykonávání aktuálního webového požadavku došlo k nezpracované výjimce. Zkontrolujte informace o stack trace pro podrobnosti o chybě a odkud ve vašem kódu chybu způsobila.
         Podrobnosti o výjimek: System.ArgumentException: Neplatné parametry postbacku nebo callbacku. Ověřování událostí je povoleno v konfiguraci s < stránkami enableEventValidation="true"/> nebo <% @ Page EnableEventValidation="true" %> na stránkách. Pro bezpečnostní účely tato funkce ověřuje, že parametry události postbacku nebo callbacku pocházejí ze serverové kontroly, která je původně vykreslila. Pokud jsou data platná a očekávaná, použijte Clientcrip k odstranění metody tManager.RegisterForEventValidation pro registraci zpětného nebo zpětného volání dat k ověření.

       Po dlouhém zkoumání jsem žádný problém nenašel a bylo správné zkontrolovat kód znovu, zkontroloval jsem ID a atributy všech ovládacích prvků na stránce a stále jsem problém nenašel. Později jsem zjistil, že se stalo toto:

Podmínky výskytu:
1. Na obrazovce jsou skryté ovládací prvky.
2. Více Gridview vazeb.

3. Vnořené do více forem.
Příčiny výskytu:
. .NET vygeneruje __EVENTVALIDATION skryté pole na konečné stránce na základě výstupních prvků na stránce. Byl proveden jednoduchý test. Vytvořte <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> a vytvořte odpovídající obslužník události Click. Spusť program a správně reagovat na událost. Poté nastavte btnSubmit.Visable=false a ručně přidejte <input type="submit" jméno="btnSubmit" value="Submit" /> na stránku. Spusťte program a objeví se výjimka s obsahem EnableEventValidation. Nastavte <@Page EnableEventValidation="false" > program znovu spusťte, aby správně reagoval na událost. Při pozorování obsahu obou __EVENTVALIDATION před a po nich lze zjistit, že jsou odlišné. Pokud jde o výjimku, která nastane, lze považovat za to, že btnSubmit není zahrnut ve výstupu, ale když je odeslán do pozadí, je tam odpovídající obsah, který je nekonzistentní, takže v případě ověření události je zapnuto. .NET vyhodí výjimku.

Řešení 1:
Page_Load(odesílatel objektu, EventArgs e)
{
    pokud (! Page.IsPostBack)
    {
        data vázat;
    }
}
Řešení 2:
<pages enableEventValidation="false"/>

1. Přidat EnableEventValidation="false" do <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Dědí="_Default" %> stránky. (Za prvé)

2. Projděte web.config
<system.web>
<pages enableEventValidation="false"/>

3. Je to vnoření formulářů, stránka může mít pouze jeden formulář, což lze vyřešit pečlivou kontrolou kódu.

4. Pokud stránka obsahuje ovládací prvky jako DropDownList nebo ListBox, může to být způsobeno následujícími důvody:

4.1 Použití ajax v rozbalovacím menu se běžně nachází v menu pro provinční a městské propojení, což může být způsobeno tím, že počáteční hodnota položky v rozbalovacím menu je přiřazena stránce aspx, chyba se zobrazí při zveřejnění události, počáteční hodnota položky v rozbalovacím menu je smazána a položka je přidána do vázané události.
4.2 Důvodem je, že vlastnost Value u položky SeznamPoložky v ovládání DropDownSeznam obsahuje čínské znaky. Stačí změnit hodnotu na angličtinu nebo na číslo. Nejlepší je přidat následující příkaz do web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Protože POSTBACK není kódován v UTF-8, odstranění t pomocí JAVAscrip bude považováno za problematické.
Stačí změnit requestEncoding="utf-8" na něj, ale responseEncoding="utf-8" ne

5. Zaregistrujte se pro ověření událostí
Principem je nechat asp.net tuto hodnotu postbacku zaznamenat.
RegistrForEventValidation musí být vyvolán při renderování.






Předchozí:Tianhe-2 byl zakázán nakupovat zasvěcené: Spojené státy závidí čínskému superpočítačovému výkonu
Další:Profesionalita "Šablona kariérního plánu"
 Pronajímatel| Zveřejněno 22.04.2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Kopírovat kód


Zveřejněno 22.04.2015 10:40:46 |
Souhlasím s výše uvedeným bodem, že EnableEventValidation="true" bude validovat lokálně a spotřebovávat CPU; EnableEventValidation="false" vrátí validaci serveru a stránku znovu načte.
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com