Aynı sayfada Gridview kontrolünün kullanımıyla ilgili olarak, güncelleme olayına sunucu tarafından yanıt veremediği, hata alarmı verdiği ve ardından bazı bilgileri sorguladığı anlaşılıyor, çözüm şu şekilde özetleniyor: Güncelleme olayına tıklayın yanıt veremiyor çünkü gönderi veya geri çağrı parametresi geçersiz oluyor. Sayfalarda enableEventValidation="true"/> veya <%@ Page EnableEventValidation="true" %> ile <yapılandırmada etkinlik doğrulaması etkinleştirilir. Güvenlik amacıyla, bu özellik geri dönüş veya geri çağrı olaylarının parametrelerinin onları orijinal olarak render eden sunucu kontrolünden geldiğini doğrular. Veri geçerli ve bekleniyorsa, doğrulama için geri gönderme veya geri çağrı verisini kaydetmek amacıyla tManager.RegisterForEventValidation yöntemini kaldırmak üzere Clientcrip ile kullanın.
Açıklama: Mevcut web isteği yürütülürken yönetilmeyen bir istisna meydana geldi. Hata hakkında detaylar ve hatanın kodunuzda nereden kaynaklandığını kontrol edin.
İstisna detayları: System.ArgumentException: Geçersiz geri gönderme veya geri çağrı parametreleri. Sayfalarda enableEventValidation="true"/> veya <% @ Page EnableEventValidation="true" %> <ile yapılandırmada etkinlik doğrulaması etkinleştirilir. Güvenlik amacıyla, bu özellik, geri gönderme veya geri çağrı olayının parametrelerinin onları orijinal olarak render eden sunucu kontrolünden geldiğini doğrular. Veri geçerli ve bekleniyorsa, doğrulama için geri gönderme veya geri çağrı verisini kaydetmek amacıyla tManager.RegisterForEventValidation yöntemini kaldırmak üzere Clientcrip ile kullanın. Uzun süre inceledikten sonra herhangi bir sorun bulamadım, kodu tekrar kontrol etmek doğruydu, ayrıca sayfadaki tüm kontrollerin kimliklerini ve özelliklerini kontrol ettim ama yine de sorunu bulamadım. Daha sonra öğrendim ki olanlar şöyle: Oluşma koşulları: 1. Ekranda gizli kontroller vardır. 2. Birden fazla Gridview bağlaması. 3. Birden fazla biçimde iç içe yerleşmiş. Oluşma nedenleri: . .NET, sayfadaki çıktı öğelerine göre son sayfada __EVENTVALIDATION gizli bir alan oluşturur. Basit bir test yapıldı. <asp: button id="btnSubmit" runat="sunucu" text="Submit" toolip="Submit" /> oluşturun ve ilgili Click olay işleyicisini oluşturun. Programı çalıştırın ve olaya doğru şekilde yanıt verin. Sonra btnSubmit.Visable=false ayarlayın ve sayfaya <input type="submit" name="btnSubmit" value="Submit" /> elle ekleyin. Programı çalıştırın, EnableEventValidation içeriğiyle birlikte bir istisna belirecektir. EnableEventValidation="false" <@Page programı tekrar >çalıştırın ve olaya doğru yanıt vermek için programı tekrar çalıştırın. İki önceki ve sonraki __EVENTVALIDATION içeriğine bakıldığında, farklı oldukları görülebilir. Ortaya çıkan istisna ile ilgili olarak, btnSubmit'in çıktıya dahil edilmediği düşünülebilir, ancak arka plana gönderildiğinde karşılık gelen içerik vardır ve bu tutarsızdır, bu da olay doğrulaması etkinleştirilmiş durumda olabilir. .NET bir istisna sunuyor.
Çözüm 1: Page_Load(nesne gönderici, EventArgs e)
{ if (! Page.IsPostBack) { veri bağlamak; }
} Çözüm 2: <pages enableEventValidation="false"/> 1. EnableEventValidation="yanlış" sayfa dili="c#" AutoEventWireup="true" CodeFile="Default.aspx.cs" sayfanın %> <%_Default içine EnableEventValidation="false" ekleyin. (Öncelikle)
2. web.config üzerinden geçin <system.web> <pages enableEventValidation="false"/>
3. Form iç içe geçirmedir, bir sayfada yalnızca bir Form olabilir ve bu da kodu dikkatlice kontrol ederek çözülebilir.
4. Sayfada DropDownList veya ListBox gibi kontroller varsa, bu aşağıdaki nedenlerden kaynaklanabilir:
4.1 Açılır menüde ajax kullanımı genellikle il ve şehir bağlantı menüsünde bulunur; bunun nedeni, açılır menüdeki ilk öğe değerinin aspx sayfasına atanmış olması ve etkinlik yayınlandığında hata sorulması, açılır menüdeki ilk öğe değerinin silinmesi ve öğenin bağlı olaya eklenmesi olabilir. 4.2 Bunun nedeni, DropDownList kontrolünün ListIt'inin Değer özelliğinin Çince karakterler içermesidir. Sadece değeri İngilizce veya bir sayı olarak değiştirin. Web.config adresine aşağıdaki ifadeyi eklemek en iyisidir: <küreselleşme talebiEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> POSTBACK UTF-8'de kodlanmadığı için, JAVAscrip t'nin kaldırılması sorunlu sayılır. Sadece requestEncoding="utf-8" olarak değiştir, ama responseEncoding="utf-8" değiştirmiyor
5. Etkinlik Doğrulaması İçin Kayd Olun Prensip, asp.net bu geri dönüş değerini kaydetmektir. RegisterForEventValidation render sırasında çağrılmalıdır.
|