웹 개발 메모장
[C#] 잘못된 다시 게시 또는 콜백 인수입니다. 원인 및 해결 본문
<%@ Page EnableEventValidation="true" %>
잘못된 다시 게시 또는 콜백 인수입니다. 이벤트 유효성 검사는 구성의 <pages enableEventValidation="true"/> 또는 페이지의 <%@ Page EnableEventValidation="true" %>를 사용하여 활성화됩니다. 이 기능은 다시 게시 또는 콜백 이벤트에 대한 인수가 원래 이들을 렌더링한 서버 컨트롤에서 발생하는지 확인하여 보안을 유지합니다. 데이터가 올바르면 유효성 검사에 대한 다시 게시 또는 콜백 데이터를 등록하는 데 ClientScriptManager.RegisterForEventValidation 메서드를 사용합니다.
원인 : 페이지가 EventValidation 을 통과하지 못했다.
<%@ Page EnableEventValidation="true" %>
post 방식으로 접근하는 페이지에 대해 유효성 검사 실시 하겠다는 말입니다.
이게 default 가 "true" 입니다.
해결방법
① 이게 제가 아는 경우가 두가지인데 넘어가는 파라미터가 적절하지 않은 경우가 있을 수 있습니다.
예를 들어 전체를 감싸는 폼을 submit 하는 경우
1 | $('#form1').attr('action', 'test.aspx').attr('method', 'post').submit(); | cs |
이런식으로 경우에따라 같은 폼을 action만 바꾸어 전송하게되면 불필요한 파라미터도 같이 넘어갈 수 있습니다. (텔레릭같은 컴포넌트를 사용하면 뭔가 엄청많이넘어감)이때 의도치않게 같이 넘어간 파라미터 때문에 유효성 검사를 통과하지 못할 수 있습니다.
그런 경우 <form>을 새로 만들어서 원하는 패러미터만 전송하면 문제가 해결될 수 있습니다.
② Page_Load()에서 데이터 바인딩할때 문제가 발생하는 경우
아래와 같이 데이터 바인딩하는 부분을 if(!postBack) 내부에 넣어주면 해결될 수 있습니다.
1 2 3 4 | if (!IsPostBack) { //여기서 데이터 바인딩을 코딩 } | cs |
2. 검사를 하지 않는다.(비추)
- 호출되는 페이지의 <%@ Page .. %>에 EnableEventValidation="false" 를 추가하면 됩니다.
3. get방식으로 접근한다.(비추)
- 예를들어 <form> 태그에서는 method = 'get' 으로~
'옛날.. > C#' 카테고리의 다른 글
[C#] 게시판 썸네일 등록, 게시글 img 태그를 이용하기 (0) | 2017.11.28 |
---|---|
[C#] cs 페이지에서 자바스크립트 코드 작성 방법 (0) | 2017.11.08 |
[C#] 확장메소드 란? (0) | 2017.10.20 |
[C#] C# 코드에서 @ 골뱅이 란? (0) | 2017.10.20 |
[C#] 예외처리 란? (0) | 2017.10.20 |
Comments