Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 17049|Відповідь: 2

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

[Копіювати посилання]
Опубліковано 21.04.2015 15:56:12 | | |
Щодо використання керування Gridview на тій самій сторінці, виявляється, що сервер не може відповісти на подію оновлення, здається, що сигналізує помилка і потім запитує певну інформацію, і тепер рішення підсумовано так: Натисніть на подію оновлення не може відповісти, оскільки параметр postback або callback недійсний. Валідація подій увімкнена в конфігурації <pages enableEventValidation="true"/> або <%@ Page EnableEventValidation="true" %> на сторінках. З міркувань безпеки ця функція перевіряє, що параметри подій postback або callback походять від серверного контролю, який їх спочатку відрендерив. Якщо дані дійсні та очікувані, використовуйте Clientscrip, щоб видалити метод tManager.RegisterForEventValidation для реєстрації даних postback або callback для валідації.
Опис: Під час виконання поточного веб-запиту виникло необроблене виключення. Перевірте інформацію про трасування стеку для деталей про помилку і звідки вона взялася у вашому коді, що спричинила помилку.
         Деталі винятків: System.ArgumentException: Некоректні параметри postback або callback. Валідація подій увімкнена в конфігурації з < сторінками enableEventValidation="true"/> або <% @ Page EnableEventValidation="true" %> на сторінках. З міркувань безпеки ця функція перевіряє, що параметри події postback або callback походять із серверного контролю, який їх спочатку відрендерив. Якщо дані дійсні та очікувані, використовуйте Clientscrip, щоб видалити метод tManager.RegisterForEventValidation для реєстрації даних postback або callback для валідації.

       Після тривалого перегляду я не знайшов жодної проблеми, і було правильно перевірити код ще раз, перевірив ID та атрибути всіх елементів керування на сторінці, але все одно не знайшов проблему. Пізніше я дізнався, що сталося ось що:

Умови виникнення:
1. На екрані є приховані елементи керування.
2. Множинні зв'язки Gridview.

3. Вкладений у кілька форм.
Причини виникнення:
. .NET генерує __EVENTVALIDATION приховане поле на фінальній сторінці на основі вихідних елементів сторінки. Було проведено простий тест. Створіть <asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" /> і створіть відповідний обробник події Click. Запустіть програму і правильно реагуйте на подію. Потім встановіть btnSubmit.Visable=false і вручну додайте <input type="submit" name="btnSubmit" value="Submit" /> на сторінці. Запустіть програму, і з вмістом EnableEventValidation з'явиться виняток. Встановіть <@Page EnableEventValidation="false" > запустіть програму знову, щоб правильно відреагувати на подію. Спостерігаючи за змістом обох __EVENTVALIDATION до і після, можна побачити, що вони різні. Щодо винятку, що виникає, можна вважати, що btnSubmit не включений у вихідний матеріал, але коли він подається у фон, з'являється відповідний контент, що є непослідовним, тому у випадку перевірки події увімкнено. .NET робить виняток.

Рішення 1:
Page_Load(object sender, EventArgs e)
{
    якщо (! Сторінка.IsPostBack)
    {
        дані зв'язування;
    }
}
Рішення 2:
<pages enableEventValidation="false"/>

1. Додати EnableEventValidation="false" до мови сторінки <%@="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> сторінки. (По-перше)

2. Перейдіть через web.config
<system.web>
<pages enableEventValidation="false"/>

3. Це вкладення форми, сторінка може мати лише одну форму, яку можна розв'язати, ретельно перевіривши код.

4. Якщо на сторінці є такі елементи, як DropDownList або ListBox, це може бути спричинено такими причинами:

4.1 Використання ajax у випадаючому меню часто зустрічається у меню зв'язку між провінціями та містами, що може бути пов'язано з тим, що початкове значення елемента випадаючого меню присвоюється сторінці aspx, і помилка виникає при публікації події, початкове значення елемента з випадаючого меню видаляється, а елемент додається до зв'язаної події.
4.2 Причина в тому, що властивість Value у ListItem контролю DropDownList містить китайські ієрогліфи. Просто змініть значення на англійську або число. Найкраще додати таку заяву у web.config:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> Оскільки POSTBACK не кодується в UTF-8, видалення t з JAVAscrip буде вважатися проблематичним.
Просто змініть requestEncoding="utf-8" на нього, але responseEncoding="utf-8" цього не робить

5. Зареєструватися для валідації подій
Принцип полягає в тому, щоб дозволити asp.net зафіксувати це значення постбеку.
RegisterForEventValidation має бути викликаний під час рендерингу.






Попередній:Tianhe-2 заборонили купувати інсайдерів: Сполучені Штати заздрять суперкомп'ютерній потужності Китаю
Наступний:Професіоналізм «Шаблон кар'єрного плану»
 Орендодавець| Опубліковано 22.04.2015 10:36:18 |
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test1.aspx.cs" Inherits="WebApplication1.test1" enableEventValidation="false" %>
Копія коду


Опубліковано 22.04.2015 10:40:46 |
Погоджуюся з вищесказаною думкою, що EnableEventValidation="true" буде локально валідуватися і споживати процесор; EnableEventValidation="false" поверне перевірку сервера і завантажить сторінку.
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com