Mengenai penggunaan kontrol Gridview di halaman yang sama, ditemukan bahwa peristiwa pembaruan tidak dapat ditanggapi oleh server, tampaknya alarm kesalahannya dan kemudian mengkueri beberapa informasi, dan sekarang solusinya dirangkum sebagai berikut: Klik peristiwa pembaruan tidak dapat merespons karena parameter postback atau callback tidak valid. Validasi peristiwa diaktifkan dalam konfigurasi dengan <pages enableEventValidation="true"/> atau <%@ Page EnableEventValidation="true" %> pada halaman. Untuk tujuan keamanan, fitur ini memverifikasi bahwa parameter peristiwa postback atau callback berasal dari kontrol server yang awalnya merendernya. Jika data valid dan diharapkan, gunakan Clientscrip untuk menghapus metode tManager.RegisterForEventValidation untuk mendaftarkan data postback atau callback untuk validasi.
Deskripsi: Pengecualian yang tidak ditangani terjadi selama eksekusi permintaan web saat ini. Periksa informasi pelacakan tumpukan untuk detail tentang kesalahan dan dari mana asalnya dalam kode Anda yang menyebabkan kesalahan.
Detail pengecualian: System.ArgumentException: Parameter postback atau callback yang tidak valid. Validasi peristiwa diaktifkan dalam konfigurasi dengan halaman < enableEventValidation="true"/> atau <% @ Page EnableEventValidation="true" %> pada halaman. Untuk tujuan keamanan, fitur ini memverifikasi bahwa parameter peristiwa postback atau callback berasal dari kontrol server yang awalnya merendernya. Jika data valid dan diharapkan, gunakan Clientscrip untuk menghapus metode tManager.RegisterForEventValidation untuk mendaftarkan data postback atau callback untuk validasi. Setelah melihatnya untuk waktu yang lama, saya tidak menemukan masalah, dan benar untuk memeriksa kode lagi, dan saya memeriksa ID dan atribut semua kontrol di halaman dan masih tidak menemukan masalahnya. Kemudian, saya menemukan bahwa inilah yang terjadi: Kondisi kejadian: 1. Ada kontrol tersembunyi di layar. 2. Beberapa pengikatan Gridview. 3. Bersarang dalam berbagai bentuk. Penyebab terjadi: . .NET menghasilkan bidang tersembunyi __EVENTVALIDATION di halaman akhir berdasarkan elemen output di halaman. Tes sederhana dilakukan. Buat <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> dan buat penanganan peristiwa Klik yang sesuai. Jalankan program dan tanggapi peristiwa dengan benar. Kemudian atur btnSubmit.Visable=false dan tambahkan secara manual <input type="submit" name="btnSubmit" value="Submit" /> pada halaman. Jalankan program dan pengecualian akan muncul dengan konten EnableEventValidation. Atur <@Page EnableEventValidation="false" > jalankan program lagi untuk merespons peristiwa dengan benar. Mengamati isi kedua __EVENTVALIDATION sebelum dan sesudah, dapat ditemukan bahwa keduanya berbeda. Mengenai pengecualian yang terjadi, dapat dianggap bahwa btnSubmit tidak termasuk dalam output, tetapi ketika dikirimkan ke latar belakang, ada konten yang sesuai, yang tidak konsisten, jadi dalam kasus verifikasi peristiwa diaktifkan. .NET melemparkan pengecualian.
Solusi 1: Page_Load(pengirim objek, EventArgs e)
{ jika (! Halaman.IsPostBack) { mengikat data; }
} Solusi 2: <pages enableEventValidation="false"/> 1. Tambahkan EnableEventValidation="false" ke halaman <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> halaman. (Pertama-tama)
2. Buka web.config <sistem.web> <pages enableEventValidation="false"/>
3. Ini adalah bersarang Formulir, halaman hanya dapat memiliki satu Formulir, yang dapat diselesaikan dengan memeriksa kode dengan cermat.
4. Jika halaman berisi kontrol seperti DropDownList atau ListBox, hal ini mungkin disebabkan oleh alasan berikut:
4.1 Menggunakan ajax di menu tarik-turun biasanya ditemukan di menu tautan provinsi dan kota, yang mungkin disebabkan oleh fakta bahwa nilai item awal dari menu tarik-turun ditetapkan ke halaman aspx, dan kesalahan diminta saat acara diposting, dan nilai item awal dari menu tarik-turun dihapus, dan item item ditambahkan ke peristiwa terikat. 4.2 Alasannya adalah properti Value dari ListItem dari kontrol DropDownList berisi karakter Cina. Cukup ubah nilainya menjadi bahasa Inggris atau angka. Yang terbaik adalah menambahkan pernyataan berikut di web.config: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Karena POSTBACK tidak dikodekan di UTF-8, penghapusan t JAVAscrip akan dianggap bermasalah. Ubah saja requestEncoding="utf-8" ke dalamnya, tetapi responseEncoding="utf-8" tidak
5.Daftar Untuk Validasi Peristiwa Prinsipnya adalah membiarkan asp.net mencatat nilai postback ini. RegisterForEventValidation harus dipanggil saat render.
|