Ambos son controles de servidor ASP.NET. Los que corresponden a elementos HTML están en el espacio de nombres System.Web.UI.HtmlControls
, y los controles web están en el espacio de nombres System.Web.UI.WebControls
.
Los controles HTML son más livianos y corresponden exactamente a un elemento HTML, mientras que los controles web tienen más características y se pueden representar como elementos HTML diferentes según las capacidades del navegador y la configuración del control.
Un control HTML se representa como un único elemento HTML, mientras que un control web se representa como cero o más elementos HTML. El control Literal
, por ejemplo, no se representa como un elemento, solo muestra su texto. Hay otros controles que no representan ningún elemento por sí solos, como los controles Repeater
y PlaceHolder
.Por otro lado, el control CheckBoxList
, por ejemplo, se representa como varios elementos HTML, un table
como contenedor y input
elementos para cada casilla de verificación dentro de él.
Un ejemplo de un control que se representa utilizando diferentes elementos es el control TextBox
, que será generado ya sea como un input
o un elemento de textarea
dependiendo de su propiedad TextMode
.
Los controles web tienen más características, pero también usan más recursos. Tienen más propiedades y admiten cosas como temas y enlace de datos. Muchos de los controles web ponen datos en el ViewState
, que se envía como parte de la página. Si no tiene cuidado, el ViewState
puede ser bastante grande y afectar el tiempo de carga de la página.
+1 Algunas personas piensan que agregar runat = "server" a un control HTML no cambia nada, cuando de hecho están convirtiendo este control en un control de servidor. –