Относно използването на контрола Gridview на същата страница, установява се, че събитието за обновяване не може да бъде отговорено от сървъра, изглежда, че алармата за грешка се активира и след това изпраща някаква информация, и решението е обобщено така: Кликнете – събитието за обновление не може да отговори, защото параметърът postback или callback е невалиден. Валидирането на събития е активирано в конфигурацията с <pages enableEventValidation="true"/> или <%@ Page EnableEventValidation="true" %> върху страниците. От целите на сигурността тази функция проверява, че параметрите на събитията за връщане или повикване произхождат от контрола на сървъра, който първоначално ги е визуализирал. Ако данните са валидни и очаквани, използвайте Clientscrip, за да премахнете метода tManager.RegisterForEventValidation за регистрация на postback или callback данни за валидация.
Описание: Необработено изключение възникна по време на изпълнението на текущата уеб заявка. Проверете информацията за стек трасето за подробности относно грешката и откъде е дошла в кода ви, който я е причинил.
Детайли за изключения: System.ArgumentException: Невалидни параметри за postback или callback. Валидирането на събития е активирано в конфигурацията с < страници enableEventValidation="true"/> или <% @ Page EnableEventValidation="true" %> върху страниците. За целите на сигурността тази функция проверява, че параметрите на събитието за връщане или повикване произхождат от сървърния контрол, който първоначално ги е визуализирал. Ако данните са валидни и очаквани, използвайте 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" стойност="Submit" /> на страницата. Стартирайте програмата и ще се появи изключение със съдържанието на EnableEventValidation. Задайте <@Page EnableEventValidation="false" > изпълнете програмата отново, за да отговорите правилно на събитието. Наблюдавайки съдържанието на двете __EVENTVALIDATION преди и след това, може да се установи, че те са различни. Относно изключението, което се случва, може да се счита, че btnSubmit не е включен в изхода, но когато се подава във фона, има съответно съдържание, което е непоследователно, така че при проверка на събитието е активирана. .NET прави изключение.
Решение 1: Page_Load(object sender, EventArgs e)
{ ако (! Страница.IsPostBack) { данни за свързване; }
} Решение 2: <pages enableEventValidation="false"/> 1. Добавете EnableEventValidation="false" към <%@ Page Language="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 трябва да се извика при рендериране.
|