웹 개발 메모장

[C#] 잘못된 다시 게시 또는 콜백 인수입니다. 원인 및 해결 본문

옛날../C#

[C#] 잘못된 다시 게시 또는 콜백 인수입니다. 원인 및 해결

도로롱주 2017. 10. 26. 16:08




<%@ Page EnableEventValidation="true" %>





잘못된 다시 게시 또는 콜백 인수입니다. 이벤트 유효성 검사는 구성의 <pages enableEventValidation="true"/> 또는 페이지의 <%@ Page EnableEventValidation="true" %>를 사용하여 활성화됩니다. 이 기능은 다시 게시 또는 콜백 이벤트에 대한 인수가 원래 이들을 렌더링한 서버 컨트롤에서 발생하는지 확인하여 보안을 유지합니다. 데이터가 올바르면 유효성 검사에 대한 다시 게시 또는 콜백 데이터를 등록하는 데 ClientScriptManager.RegisterForEventValidation 메서드를 사용합니다.



원인 : 페이지가 EventValidation 을 통과하지 못했다.


<%@ Page EnableEventValidation="true" %>

post 방식으로 접근하는 페이지에 대해 유효성 검사 실시 하겠다는 말입니다.

이게 default 가 "true" 입니다.





해결방법


1. 유효성 검사를 통과한다.

① 이게 제가 아는 경우가 두가지인데 넘어가는 파라미터가 적절하지 않은 경우가 있을 수 있습니다.

 예를 들어 전체를 감싸는 폼을 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' 으로~



Comments