Per quanto riguarda l'uso del controllo Gridview sulla stessa pagina, si scopre che l'evento di aggiornamento non può essere contestato dal server, sembra che il suo allarme di errore e poi interroghi alcune informazioni, e ora la soluzione viene riassunta come segue: clicca sull'evento di aggiornamento non può rispondere perché il parametro di postback o callback è invalido. La validazione degli eventi è abilitata nella configurazione con <pages enableEventValidation="true"/> o <%@ Page EnableEventValidation="true" %> sulle pagine. Per motivi di sicurezza, questa funzione verifica che i parametri degli eventi di postback o callback abbiano origine dal controllo del server che li ha originariamente reati. Se i dati sono validi e attesi, usa Clientscrip per rimuovere il metodo tManager.RegisterForEventValidation per registrare un postback o un callback per la validazione.
Descrizione: Durante l'esecuzione della richiesta web corrente si è verificata un'eccezione non gestita. Controlla le informazioni della traccia dello stack per dettagli sull'errore e da dove provenga nel tuo codice che ha causato l'errore.
Dettagli eccezione: System.ArgumentException: Parametri di postback o callback non validi. La validazione degli eventi è abilitata nella configurazione con < pagine enableEventValidation="true"/> oppure <% @ Page EnableEventValidation="true" %> sulle pagine. Per motivi di sicurezza, questa funzione verifica che i parametri dell'evento di postback o callback abbiano origine dal controllo server che li ha originariamente resi. Se i dati sono validi e attesi, usa Clientscrip per rimuovere il metodo tManager.RegisterForEventValidation per registrare un postback o un callback per la validazione. Dopo averlo guardato a lungo, non ho trovato alcun problema, ed è stato corretto controllare di nuovo il codice, ho controllato gli ID e gli attributi di tutti i controlli sulla pagina e ancora non ho trovato il problema. Più tardi, ho scoperto che è successo così: Condizioni di verificazione: 1. Ci sono controlli nascosti sullo schermo. 2. Collegamenti multipli Gridview. 3. Annidati in molteplici forme. Cause di occorrenza: . .NET genera un __EVENTVALIDATION campo nascosto nella pagina finale basato sugli elementi di output presenti nella pagina. Fu fatta una semplice prova. Crea un <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> e crea il corrispondente gestore di eventi click. Esegui il programma e rispondi correttamente all'evento. Poi imposta btnSubmit.Visable=false e aggiungi manualmente <input type="submit" name="btnSubmit" value="Submit" /> sulla pagina. Esegui il programma e apparirà un'eccezione con il contenuto EnableEventValidation. Imposta <@Page EnableEventValidation="false" > esegue di nuovo il programma per rispondere correttamente all'evento. Osservando il contenuto dei due __EVENTVALIDATION prima e dopo, si può scoprire che sono diversi. Per quanto riguarda l'eccezione che si verifica, si può considerare che btnSubmit non sia incluso nell'output, ma quando viene inviato in background, c'è il contenuto corrispondente, che è incoerente, quindi nel caso della verifica degli eventi è abilitata. .NET fa un'eccezione.
Soluzione 1: Page_Load(object sender, EventArgs e)
{ se (! Page.IsPostBack) { binding dati; }
} Soluzione 2: <pagine enableEventValidation="false"/> 1. Aggiungi EnableEventValidation="false" al linguaggio <%@ pagina="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Eredita ="_Default" %> della pagina. (Prima di tutto)
2. Sfoglia web.config <system.web> <pagine enableEventValidation="false"/>
3. Si tratta di Form nesting, una pagina può avere solo un Form, che può essere risolto controllando attentamente il codice.
4. Se la pagina contiene controlli come DropDownList o ListBox, può essere causato dai seguenti motivi:
4.1 L'uso di ajax nel menu a tendina si trova comunemente nel menu di collegamento provinciale e cittadino, il che può essere dovuto al fatto che il valore iniziale dell'elemento nel menu a tendina viene assegnato alla pagina aspx, l'errore viene segnalato quando l'evento viene pubblicato, il valore iniziale del menu a tendina viene eliminato e l'elemento viene aggiunto all'evento associato. 4.2 Il motivo è che la proprietà Value del ListItem del controllo DropDownList contiene caratteri cinesi. Basta cambiare il valore in inglese o in un numero. È meglio aggiungere la seguente affermazione nel web.config: <requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Poiché POSTBACK non è codificato in UTF-8, la rimozione di t da JAVAscrip sarà considerata problematica. Basta cambiare requestEncoding="utf-8" in quello, ma responseEncoding="utf-8" non
5. Registrarsi per la validazione dell'evento Il principio è lasciare che asp.net registri questo valore di postback. RegisterForEventValidation deve essere chiamato al render.
|