2008-09-11 16 views
5

Me gusta HtmlControls porque no hay magia HTML en marcha ... la fuente asp es similar a lo que ve el cliente.Cuándo utilizar HtmlControls vs WebControls

No puedo discutir la utilidad de GridView, Repeater, CheckBoxLists, etc., así que los uso cuando necesito esa funcionalidad.

Además, parece raro tener código que mezcla y combina:

<asp:Button id='btnOK' runat='server' Text='OK' /> 
<input id='btnCancel' runat='server' type='button' value='Cancel' /> 

(El caso anterior en el caso de que quería enlazar un detector de eventos de servidor para bien, pero Cancelar sólo se ejecuta un javascript que oculta el div actual)

¿Hay alguna guía de estilo definitiva por ahí? ¿Debería evitarse HtmlControls?

Respuesta

5

Puede ser útil pensar en los controles HTML como una opción cuando desea tener más control sobre el marcado que termina siendo emitido por su página. Más control en el sentido de que quiere que CADA navegador vea exactamente el mismo marcado.

Si crea System.Web.UI.HtmlControls como:

<input id='btnCancel' runat='server' type='button' value='Cancel' /> 

entonces usted sabe lo que va a ser emitida tipo de código. Aunque la mayoría de las veces:

<asp:Button id='btnCancel' runat='server' Text='Cancel' /> 

terminará siendo el mismo marcado. El mismo marcado no siempre se emite para todos los WebControls. Muchos WebControls han incorporado una representación adaptable que renderizará HTML diferente basado en el agente de usuario del navegador. Como ejemplo, un DataGrid se verá bastante diferente en un navegador móvil que en un navegador de escritorio.

El uso de WebControls en lugar de HtmlControls también le permite aprovechar ASP.NET v2.0 ControlAdapters, que creo que solo funciona con WebControls, esto le permitirá el control de configuración programática sobre el marcado que se emite.

Esto puede parecer más valioso si tenemos en cuenta que ciertos navegadores móviles o WebTV van a querer WML o conjuntos de marcas completamente diferentes.

1

bueno ... no usaría un control html si no necesita hacer nada en el servidor. Haría

<input id='btnCancel' type='button' value='Cancel' /> 

fin.

3

En mi experiencia, hay muy poca diferencia. Como dijo Darren, si no necesita la funcionalidad del lado del servidor, los controles HTML probablemente tengan un impacto menor.

Y no olvide, puede atornillar la funcionalidad del lado del servidor en casi cualquier control de HTML simplemente agregando una directiva runat = "server" y una identificación a la misma.

0

Mediante la adición de runat = "servidor" se puede obtener acceso a los controles HTML en el lado del servidor .. y creo que los controles HTML son menos peso en comparación con los controles de servidor ASP.NET ..

Cuestiones relacionadas