2012-07-12 3 views
19

실제 ASP.NET 컨트롤 대신 표준 HTML 요소에서 runat = "server"를 사용하는 것이 적절합니까? 정상적인 요소의 html/텍스트 설정에 대한 완전한 제어권을 가지고 있습니다. 그렇다면 왜 "clunky"ASP.NET WebForms 컨트롤 대신 사용하지 않을까요? 일반 HTML에서 runat = "server"를 사용하는 경우

하나가 다른 것보다 더 나은 경우

, 관심의 몇 가지 포인트는 내가 알고 싶습니다 :

  • 성능 차이
  • 기능의 차이
  • 다른 차이가 분명하지 않은?

예 차이 : 나는 내 자신의 HTML을 작성하는 유연성을 필요로하지만 여전히 뒤에 코드에서 속성의 액세스하는 데 필요한 때

<asp:Literal ID="mySpecialHtml" runat="server" /> 

<div id="mySpecialHtml" runat="server" /> 

답변

16

둘 다 ASP.NET 서버 컨트롤입니다. HTML 요소에 해당하는 요소는 System.Web.UI.HtmlControls 네임 스페이스에 있고 웹 컨트롤은 System.Web.UI.WebControls 네임 스페이스에 있습니다.

HTML 컨트롤은보다 가벼우 며 HTML 요소와 정확히 일치하지만 웹 컨트롤에는 브라우저 기능과 컨트롤 설정에 따라 더 많은 기능이 있으며 다른 HTML 요소로 렌더링 될 수 있습니다.

웹 컨트롤이 0 개 이상의 HTML 요소로 렌더링되는 동안 HTML 컨트롤은 단일 HTML 요소로 렌더링됩니다. 예를 들어 Literal 컨트롤은 요소로 렌더링되지 않고 텍스트 만 출력합니다. RepeaterPlaceHolder 컨트롤과 같이 요소 자체를 렌더링하지 않는 다른 컨트롤이 있습니다.한편, 예를 들어 CheckBoxList 컨트롤은 여러 HTML 요소로, 컨테이너로는 table, 내부에는 각 체크 박스에 대해 input 요소로 렌더링됩니다.

다른 요소를 사용하여 렌더링하는 제어 예에서는 input 또는 TextMode 속성에 따라 textarea 소자로서 어느 렌더링 될 TextBox 제어된다.

웹 컨트롤에는 더 많은 기능이 있지만 더 많은 리소스가 사용됩니다. 그들은 더 많은 속성을 가지며 테마 및 데이터 바인딩과 같은 것을 지원합니다. 대부분의 웹 컨트롤은 페이지의 일부로 전송되는 ViewState에 데이터를 입력합니다. 조심하지 않으면 ViewState이 상당히 커질 수 있으며 페이지 로딩 시간에 영향을 줄 수 있습니다.

10

내가 서버 HTML 컨트롤을 사용한 유일한 이유입니다. 뒤에

mySpecialHtml.InnerHtml = "something else"; 
내가 클라이언트 측에서 더 많은 작업이있을 때 HTML 컨트롤을 사용하고, 서버 측에서 더 많은 작업이있을 때 asp.net 컨트롤을 사용하는 것을 선호
1

(코드 : 뒤에 코드에서

<div id="mySpecialHtml" runat="server" /> 

).

4

ASP.NET 파서는 표준 HTML 요소 인 runat = "server"태그를 html 서버 컨트롤로 해석합니다. 예 :

<a runat="server"></a> 

그래서, 알고

<asp:HtmlAnchor runat="server"></asp:HtmlAnchor> 

로 해석됩니다 당신이 해당 HTML 서버 컨트롤을 사용하는 것보다 당신이 = RUNAT "서버"를 사용하는 경우.

ASP.NET에는 더 많은 기능, 더 많은 속성, 이벤트 등을 제공하는 웹 서버 컨트롤 집합 즉 HyperLink 컨트롤이 포함되어 있지만 경우에 따라서는 느려질 수 있습니다.

+0

+1 HTML 컨트롤에 runat = "server"를 추가하면 실제로이 컨트롤을 서버 컨트롤로 변환 할 때 아무 것도 변경되지 않는다고 생각하는 사람들이 있습니다. –

1

ASP.NET은 일반적으로 훨씬 더 많은 기능을 가진 다른 웹 서버 컨트롤 집합을 사용한다고 생각하지만 실제로는 사용자의 취향에 달려 있습니다. 당신의 작업이 대부분 서버 쪽이라면 ASP.NET 컨트롤을 고수 할 것입니다.

관련 문제