Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 17049|Odpowiedź: 2

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

[Skopiuj link]
Opublikowano 21.04.2015 15:56:12 | | |
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.






Poprzedni:Tianhe-2 został zakazany z kupowania insiderów: Stany Zjednoczone zazdroszczą chińskiej potęgi superkomputerowej
Następny:Profesjonalizm "Szablon planu kariery"
 Ziemianin| Opublikowano 22.04.2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Skopiuj kod


Opublikowano 22.04.2015 10:40:46 |
Zgadzam się z wcześniejszym punktem, że EnableEventValidation="true" będzie walidować lokalnie i zużywać CPU; EnableEventValidation="false" zwróci walidację serwera i przeładuje stronę.
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com