Jeśli chodzi o użycie sterowania Gridview na tej samej stronie, okazało się, że serwer nie może odpowiedzieć na zdarzenie updaeting, wydaje się, że jego alarm błędu i zapytanie o pewne informacje, a rozwiązanie jest podsumowane następująco: Kliknij zdarzenie aktualizacji nie może odpowiedzieć, ponieważ parametr postback lub callback jest nieprawidłowy. Walidacja zdarzeń jest włączona w konfiguracji z <pages enableEventValidation="true"/> lub <%@ Page EnableEventValidation="true" %> na stronach. Dla celów bezpieczeństwa ta funkcja weryfikuje, czy parametry zdarzeń postback lub callback pochodzą od kontrolera serwera, który je pierwotnie wygenerował. Jeśli dane są ważne i oczekiwane, użyj Clientcrip do usunięcia metody tManager.RegisterForEventValidation do rejestracji danych postback lub callback do weryfikacji.
Opis: Podczas wykonywania bieżącego żądania webowego wystąpił nieobsłużony wyjątek. Sprawdź informacje o śledzeniu stosu, aby uzyskać szczegóły dotyczące błędu i jego źródła w kodzie, które go spowodowały.
Szczegóły wyjątku: System.ArgumentException: Nieprawidłowe parametry postbacku lub callbacka. Walidacja zdarzeń jest włączona w konfiguracji z < strony enableEventValidation="true"/> lub <% @ Page EnableEventValidation="true" %> na stronach. Dla celów bezpieczeństwa ta funkcja weryfikuje, czy parametry zdarzenia postback lub callback pochodzą od kontrolera serwera, który je pierwotnie wygenerował. Jeśli dane są ważne i oczekiwane, użyj Clientcrip do usunięcia metody tManager.RegisterForEventValidation do rejestracji danych postback lub callback do weryfikacji. Po długim przeglądaniu nie znalazłem żadnego problemu, poprawnie sprawdziłem kod jeszcze raz, sprawdziłem ID i atrybuty wszystkich kontrolerów na stronie i nadal nie znalazłem problemu. Później dowiedziałem się, że tak się stało: Warunki wystąpienia: 1. Na ekranie są ukryte kontrolki. 2. Wiele przypisań Gridview. 3. Zagnieżdżone w wielu formach. Przyczyny wystąpień: . .NET generuje __EVENTVALIDATION ukryte pole na końcowej stronie na podstawie elementów wyjściowych na stronie. Przeprowadzono prosty test. Stwórz <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> i stwórz odpowiadający mu handler zdarzeń kliknięć. Uruchom program i poprawnie reaguj na zdarzenie. Następnie ustaw btnSubmit.Visable=false i ręcznie dodaj <input type="submit" name="btnSubmit" value="Submit" /> na stronie. Uruchom program i pojawi się wyjątek z treścią EnableEventValidation. Ustaw <@Page EnableEventValidation="false" > ponownie uruchom program, aby poprawnie odpowiedzieć na zdarzenie. Obserwując treść obu __EVENTVALIDATION przed i po, można zauważyć, że są różne. Jeśli chodzi o wyjątek, który występuje, można uznać, że btnSubmit nie jest uwzględniony w wyjściu, ale gdy jest wysyłany do tła, pojawia się odpowiadająca mu treść, która jest niespójna, więc w przypadku weryfikacji zdarzeń jest włączona. .NET wyrzuca wyjątek.
Rozwiązanie 1: Page_Load(nadawca obiektu, EventArgs e)
{ jeśli (! Page.IsPostBack) { wiązać dane; }
} Rozwiązanie 2: <strony enableEventValidation="false"/> 1. Dodaj EnableEventValidation="false" do <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> strony. (Przede wszystkim)
2. Przejdź przez web.config <system.web> <strony enableEventValidation="false"/>
3. To jest zagnieżdżanie formularzy, strona może mieć tylko jeden formularz, co można rozwiązać poprzez dokładne sprawdzenie kodu.
4. Jeśli strona zawiera elementy takie jak DropDown lub ListBox, może to być spowodowane następującymi przyczynami:
4.1 Użycie ajax w menu rozwijanym jest powszechnie spotykane w menu linkowania prowincji i miast, co może wynikać z faktu, że początkowa wartość produktu w menu rozwijanym jest przypisana do strony aspx, a błąd pojawia się po opublikowaniu zdarzenia, a wartość początkowa w menu rozwijanym zostaje usunięta, a element dodany do zdarzenia powiązanego. 4.2 Powodem jest to, że właściwość Value w ListItem w kontrolce DropDownList zawiera znaki chińskie. Po prostu zmień wartość na angielski lub liczbę. Najlepiej dodać następujące polecenie w web.config: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Ponieważ POSTBACK nie jest kodowany w UTF-8, usunięcie t przez JAVAscrip będzie uznane za problematyczne. Po prostu zmień requestEncoding="utf-8" na to, ale responseEncoding="utf-8" nie
5. Zarejestruj się do walidacji zdarzeń Zasada polega na tym, asp.net zarejestrować tę wartość postback. Rejestracja ZdarzeniaWeryfikacji musi być wywołana podczas renderowania.
|