같은 페이지에서 Gridview 제어를 사용하는 경우, 업데이트되는 이벤트에 서버가 응답할 수 없고, 오류 알람이 발생한 후 일부 정보를 쿼리하는 것으로 보이며, 해결책은 다음과 같이 요약됩니다: 클릭: 업데이트 이벤트는 응답할 수 없는데, 이는 postback 또는 callback 매개변수가 유효하지 않기 때문입니다. 구성 내에서 페이지에 <pages enableEventValidation="true"/> 또는 <%@ Page EnableEventValidation="true" %> 설정으로 이벤트 검증이 활성화됩니다. 보안상의 목적으로, 이 기능은 포스트백 또는 콜백 이벤트의 매개변수가 원래 렌더링한 서버 제어에서 유래했는지 검증합니다. 데이터가 유효하고 예상된다면, Clientscrip을 사용해 tManager.RegisterForEventValidation 메서드를 제거하여 포스트백 또는 콜백 데이터를 검증을 위해 등록하세요.
설명: 현재 웹 요청이 실행되는 동안 처리되지 않은 예외가 발생했습니다. 오류 발생 경로와 오류 발생 경로에 대한 스택 트레이스 정보를 확인하세요.
예외 상세 정보: System.ArgumentException: 유효하지 않은 postback 또는 콜백 매개변수. 이벤트 검증은 < 페이지에서 enableEventValidation="true"/> 또는 <% @ Page EnableEventValidation="true" %> 설정에서 활성화됩니다. 보안상의 목적으로, 이 기능은 포스트백 또는 콜백 이벤트의 매개변수가 원래 렌더링한 서버 제어에서 유래했는지 검증합니다. 데이터가 유효하고 예상된다면, Clientscrip을 사용해 tManager.RegisterForEventValidation 메서드를 제거하여 포스트백 또는 콜백 데이터를 검증을 위해 등록하세요. 오랫동안 살펴보니 문제를 찾지 못했고, 코드를 다시 확인해도 맞았으며, 페이지 내 모든 컨트롤의 ID와 속성을 확인했지만 여전히 문제를 찾지 못했습니다. 나중에 알게 된 사실은 이렇습니다: 발생 조건: 1. 화면에 숨겨진 조작 장치가 있습니다. 2. 다중 Gridview 바인딩. 3. 여러 형태로 중첩됨. 발생 원인: . .NET은 페이지 내 출력 요소를 바탕으로 최종 페이지에서 __EVENTVALIDATION 숨겨진 필드를 생성합니다. 간단한 테스트가 이루어졌다. <asp: button id="btnSubmit" runat="server" text="Submit" 툴팁="Submit" /> 생성하고 해당 Click 이벤트 핸들러를 생성합니다. 프로그램을 실행하고 사건에 올바르게 대응하세요. 그 다음 btnSubmit.Visable=false를 설정하고, 페이지에 수동으로 <input type="submit" name="btnSubmit" value="Submit" />을 추가하세요. 프로그램을 실행하면 EnableEventValidation 내용에 예외가 나타납니다. EnableEventValidation="false" <@Page 설정> 이벤트에 올바르게 반응하도록 프로그램을 다시 실행하세요. 두 __EVENTVALIDATION의 내용을 전후로 관찰하면 서로 다르다는 것을 알 수 있습니다. 예외가 발생한 경우, btnSubmit이 출력에 포함되지 않았다고 볼 수 있지만, 백그라운드에 제출되면 해당 콘텐츠가 있어 일관성이 없으므로 이벤트 검증이 활성화된 경우에 해당합니다. .NET은 예외를 던집니다.
해결책 1: Page_Load(object sender, EventArgs e)
{ 만약 (! 페이지.IsPostBack) { 데이터 결속; }
} 해결책 2: <pages enableEventValidation="false"/> 1. 페이지의 <%@ Language ="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>에 EnableEventValidation="false"를 추가합니다. (우선)
2. web.config를 통해 진행하세요 <system.web> <pages enableEventValidation="false"/>
3. 폼 중첩(Form nesting)입니다. 페이지는 하나의 폼만 가질 수 있으며, 코드를 꼼꼼히 확인하면 해결할 수 있습니다.
4. 페이지에 DropDownList 또는 ListBox 같은 제어 장치가 포함된 경우, 다음과 같은 이유로 발생할 수 있습니다:
4.1 드롭다운 메뉴에서 ajax를 사용하는 것은 주로 주 및 도시 연결 메뉴에서 찾을 수 있는데, 이는 드롭다운 메뉴의 초기 항목 값이 aspx 페이지에 할당되어 이벤트가 게시될 때 오류가 발생하고, 드롭다운 메뉴의 초기 항목 값이 삭제된 후 아이템 아이템이 결합된 이벤트에 추가되기 때문일 수 있습니다. 4.2 그 이유는 DropDownList 컨트롤의 ListItem의 Value 속성에 한자가 포함되어 있기 때문입니다. 그냥 값을 영어나 숫자로 바꾸면 됩니다. web.config에 다음과 같은 문장을 추가하는 것이 가장 좋습니다: <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/> POSTBACK이 UTF-8로 인코딩되지 않기 때문에, JAVAscrip에서 t를 제거하는 것은 문제가 될 수 있습니다. requestEncoding="utf-8"을 변경하되, responseEncoding="utf-8"은 변경하지 않습니다
5. 이벤트 검증을 위해 등록하기 원칙은 asp.net 이 포스트백 값을 기록하게 하는 것입니다. RegisterForEventValidation은 렌더 시 호출되어야 합니다.
|