Open-Closed Principle

[ASP.NET]TextBox의 AutoPostBack과 TextChanged 속성에 대해.... 본문

Programming/ASP.NET

[ASP.NET]TextBox의 AutoPostBack과 TextChanged 속성에 대해....

대박플머 2015. 1. 9. 01:02

AutoPostBack : 컨트롤의 Text 속성이 변경되었을 경우, 자동으로 폼을 서버로 전송할 것인지의 여부를 지정하는 속성

값 = (TRUE/FALSE)

TextChnaged : 컨트롤의 Text 속성이 변경되었을 경우 발생하는 이벤트


AutoPostBack 속성은 기본적으로 FALSE로 설정되어 있지만, 그 값을 TRUE로 변경할 수 있다. 

만약 TRUE로 변경했을 경우 사용자가 텍스트의 값을 변경하는 즉시, 자동으로 폼은 서브밋 된다. 그리고, 서버에서는 기본적인 이벤트 처리와 함께 TextChanged라는 이벤트 함수도 처리된다. 

AutoPostBack 속성이 FALSE로 설정되어 있는 상태에서는 TextBox 컨트롤의 Text 값이 바뀌어도 그 즉시 폼이 서버로 게시되지는 않으며, 이것이 우리가 일반적으로 작성해왔던 페이지 스타일이다. 

일반적인 경우, 웹 폼은 버튼 컨트롤의 클릭 등에 의해서 서버로 전송된다. 

AutoPostBack 기능과 관련하여 오해하기 쉬운 것이 하나 있는데, 그것은 TextChanged 이벤트의 처리 시점에 대한 것이다. 

결론 부터 이야기 하자면 AutoPostBack은 TextChanged 이벤트와 아무런 연관이 없다. 

AutoPostBack은 단지 사용자가 TextBox의 값을 변경했을 경우, 무조건 폼을 PostBack시키는 기능에 불과하다.

그리고 TextChanged 이벤트는 TextBox의 값이 사용자에 의해 변경되었다면 서버 측에서 그로 인해 발생, 처리되는 함수일 뿐이다. 

게다가 AutoPostBack이 FALSE이면서 TextChanged 이벤트가 있을 경우 서버에서 이벤트가 처리된다는 것이다. 

(단, 이벤트의 처리 시점이 텍스트의 값이 변경되는 즉시 인지 아니면 서버로 전송되는 시점인지가 다른 것이다.)


맺음말

AutoPostBack이 TRUE로 설정된 경우는 TextBox의 값이 변경되면, 그 즉시 폼이 서버로 전송되어 TextChanged 이벤트가 처리되기에, 마치 텍스트 값 변경 즉시 이벤트가 발생하는 것처럼 보이지만 사실상 서버 측의 모든 이벤트들은 폼이 PostBack 되어 서버에서 페이지를 다시금 실행할 시에 처리된다. 

ASP.NET은 서버 측의 기술이라는 것을 다시 한번 상기하고, 클라이언트 측에서 TextBox의 값을 수정하였다고 해서, 그 즉시 서버가 자동으로 어떤 처리를 하는 것은 아니라는 것을 알아야 한다. 폼의 내용을 서브밋해야만 서버 측의 처리가 시작되는 것이고, 그 처리 상황 시에 여러 가지 발생한 이벤트들도 함께 처리되는 것이다. 

서버는 서버에게로 페이지의 실행요청이 들어오지 않는 한(PostBack을 통해서, 혹은 직접적인 페이지 요청에 의해서) 그 어떠한 작업도 수행하지 않는다. 

'Programming > ASP.NET' 카테고리의 다른 글

[ASP.NET] AutoEventWireu  (0) 2014.07.16