웹 컨트롤과 Html 컨트롤은 유사한 기능이 많고 유사해 보이지만 내부 구현 메커니즘은 완전히 다릅니다.
웹 컨트롤은 Html 컨트롤
1보다 더 나은 성능을 발휘합니다. 또한 사용하기 매우 편리합니다. 다음은 Button 생성과 같은 간단한 예입니다.
Html 컨트롤은 모든 거대한 컨트롤 컬렉션을 페이지에 넣습니다. 어떤 기능이 사용되는지는 다음과 같이 속성을 설정하기만 하면 됩니다.
<입력 유형=제출/버튼 runat=서버>
이는 상당한 양의 제어 리소스를 차지합니다.
웹 컨트롤은 단일 기능으로 통합됩니다.
<asp:버튼 id="btnOK" />
2. 웹 컨트롤에는 콜백 기능이 있으며 ViewState를 사용하여 컨트롤의 상태를 유지할 수 있습니다
.
HTML 컨트롤은 페이지 작업을 클릭하면 해당 상태가 손실됩니다.
다음과 같은 실험을 할 수 있습니다.
I. 각각 a.html b.aspx라는 두 개의 파일을 만듭니다.
II. Html 컨트롤의 RadioButton과 버튼을 a.html 페이지에 추가합니다.
웹 컨트롤의 RadioButton과 b.aspx에 버튼을 추가합니다.
III.a.html은 브라우저를 더블클릭하면 바로 실행되고, b.aspx는 IIS를 통해 실행됩니다.
IV. a.html 실행 인터페이스에서 RadioButton을 선택한 다음 Button 버튼을 클릭하면 RadioButton이 표시됩니다.
선택을 취소하고(상태를 잃음) b.aspx 페이지에서 동일한 작업을 수행하면 ViewState가 있기 때문에 RadioButton이 손실되지 않습니다.
이에 대한 상태가 저장됩니다. 실행 인터페이스의 브라우저 메뉴에서 "보기" -> "소스 파일"을 클릭하여 HTML 코드 파일을 열 수 있습니다.
다음과 유사한 암호화된 ViewState를 찾습니다.
<input type="hidden" name="_VIEWSTATE" value="dDw0ajfmafmjfzzmj4"/>
실제로 ViewState의 구현 원리는 일부 정보를 숨겨진 컨트롤에 넣는 것이며 asp.net에서 생성된 ViewState 정보는
클라이언트에 저장됩니다.
여기서 주목할 점은 다음과 같습니다.
루프백 기능은 형식이 *.aspx 파일이고 컨트롤에 "runat=server" 속성이 있는 경우에만 설정할 수 있습니다.
3. HTML 컨트롤과 웹 컨트롤의 가장 큰 차이점은 이벤트 처리 방법이 다르다는 것입니다. HTML 양식 제어의 경우,
이벤트가 발생하면 브라우저가 이를 처리합니다. 그러나 웹 컨트롤의 경우 이벤트는 브라우저에서만 생성되지만 브라우저는 이벤트를 처리하도록 서버에 메시지를 보내야 합니다. 다만, 일부 이벤트
예를 들어:
키 누르기/이동/마우스 등과 같은 이벤트는 Asp.net에서 사용할 수 없습니다.
이벤트
는 매우 즉각적이므로 서버가 이를 신속하게 처리할 수 없습니다.) 이때 Html 컨트롤이 작동하고 Html 이벤트와 결합되어
프로세스를 완료하는 데 도움이 됩니다.
브라우저에서 실행되는 HTML 제어 이벤트:
클릭 시 트리거됨:
<INPUT type="button" value="Click Me" onclick="alert('Hi, Hello!');">
마우스가 튕길 때 트리거됩니다.
<INPUT type="button" value="Click Me" onmouseup="alert('Hi, Hello!');">
//컨트롤 위에 마우스를 올리면 트리거됨
<INPUT type="button" value="Click Me" onmouseover="alert('Hi, Hello!');">
//마우스가 컨트롤 위로 움직일 때 트리거됩니다.
<INPUT type="button" value="Click Me" onmousemove="alert('Hi, Hello!');">
//컨트롤을 두 번 클릭하면 트리거됩니다.
<INPUT type="button" value="Click Me" ondblclick="alert('Hi, Hello!');">
//포커스가 컨트롤에 있을 때 키를 누를 때 트리거됩니다.
<INPUT type="button" value="Click Me" onkeypress="alert('Hi, Hello!');">
//키를 누를 때 트리거됨
<INPUT type="button" value="클릭하세요" onkeydown="alert('안녕하세요, 안녕하세요!');">