Cả hai đều là các điều khiển máy chủ ASP.NET. Những cái tương ứng với các phần tử HTML nằm trong không gian tên System.Web.UI.HtmlControls
và các điều khiển web nằm trong không gian tên System.Web.UI.WebControls
.
Các điều khiển HTML có trọng lượng nhẹ hơn và tương ứng chính xác với phần tử HTML, trong khi các điều khiển web có nhiều tính năng hơn và có thể được hiển thị dưới dạng các phần tử HTML khác nhau tùy thuộc vào khả năng của trình duyệt và cài đặt của điều khiển.
Điều khiển HTML hiển thị dưới dạng một phần tử HTML, trong khi điều khiển web được hiển thị bằng 0 hoặc nhiều phần tử HTML. Ví dụ: kiểm soát Literal
không được hiển thị dưới dạng phần tử, nó chỉ xuất ra văn bản của nó. Có các điều khiển khác không tự hiển thị bất kỳ phần tử nào, chẳng hạn như các điều khiển Repeater
và PlaceHolder
.Mặt khác, điều khiển CheckBoxList
ví dụ được hiển thị dưới dạng một số phần tử HTML, một phần tử là table
làm vùng chứa và input
cho mỗi hộp kiểm bên trong nó.
Một ví dụ về điều khiển được trả lại sử dụng các yếu tố khác nhau là TextBox
kiểm soát, mà sẽ được trả lại hoặc như là một input
hoặc một yếu tố textarea
tùy thuộc vào tài sản TextMode
của nó.
Điều khiển web có nhiều tính năng hơn, nhưng cũng sử dụng nhiều tài nguyên hơn. Chúng có nhiều thuộc tính hơn và hỗ trợ những thứ như chủ đề và ràng buộc dữ liệu. Nhiều điều khiển web đưa dữ liệu vào ViewState
, được gửi dưới dạng một phần của trang. Nếu bạn không cẩn thận, các ViewState
có thể nhận được khá lớn, và ảnh hưởng đến thời gian tải của trang.
+1 Một số người nghĩ rằng việc thêm runat = "server" vào điều khiển HTML sẽ không thay đổi gì, khi thực tế họ đang chuyển đổi điều khiển này thành điều khiển máy chủ. –