2012-07-12 14 views
19

¿Es apropiado usar runat = "server" en un elemento HTML estándar en lugar de un verdadero control ASP.NET? Tengo control total sobre la configuración del html/texto del elemento normal, entonces, ¿por qué no debería usarlo en lugar de un control "burdo" de WebForms de ASP.NET?Cuándo usar runat = "server" en HTML normal

Si uno es mejor que el otro, algunos puntos de interés que les gustaría saber:

  • diferencias de rendimiento
  • diferencias de funcionalidad
  • Otras diferencias no tan obvio?

Una diferencia ejemplo:

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

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

Respuesta

16

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.

10

La única razón por la que he utilizado los controles de servidor HTML es cuando necesitaba la flexibilidad de escribir mi propio código HTML, pero todavía tenía que acceder a sus propiedades en el código detrás.

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

En código detrás:

mySpecialHtml.InnerHtml = "something else"; 
1

Yo prefiero usar los controles HTML cuando hay más trabajo en el lado del cliente, y el uso de controles ASP.NET cuando hay más trabajo en el lado del servidor (código detrás)

4

El analizador ASP.NET interpreta los elementos html estándar con la etiqueta runat = "server" como controles del servidor html. Ejemplo:

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

se interpreta como

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

Por lo tanto, tenga en cuenta que si utiliza "servidor" runat = que está utilizando el control de servidor HTML correspondiente.

Además, ASP.NET contiene un conjunto de controles de servidor web, es decir, el control HyperLink, que proporciona más funcionalidad, más propiedades, eventos, etc. pero puede ser más lento en algunos casos.

+0

+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. –

1

Creo que ASP.NET usa un conjunto diferente de controles de Servidor web que generalmente tiene mucha más funcionalidad, pero realmente depende de sus preferencias. Si su trabajo es principalmente del lado del servidor, me quedaría con los controles ASP.NET.

Cuestiones relacionadas