2009-05-18 15 views
11

¿Cuál es la diferencia de funcionalidad entreasp.net: diferencia entre runat = "servidor" y el servidor controla

<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" /> 

y

<input type="button" id="button1" runat="server" value="Click me" /> 

se comporta la entrada con el atributo runat = "servidor" tiene otras propiedades o métodos limitados?

¡Gracias!

Respuesta

20

El primero crea un System.Web.UI.WebControls.Button mientras que el segundo crea un System.Web.UI.HtmlControls.HtmlInputButton.

Ambos son controles de servidor, pero los controles en el espacio de nombres WebControls generalmente tienen un poco más de funcionalidad que los controles en el espacio de nombres HtmlControls. Normalmente ponen algunos datos en ViewState para realizar un seguimiento de su estado, y tienen eventos de devolución del lado del servidor.

Cada control en el espacio de nombre HtmlControls corresponde exactamente a un elemento HTML, mientras que los controles en el espacio de nombre WebControls pueden representarse de manera diferente según el navegador que solicite la página.

-3

Su segunda opción probablemente no funcione. runat = "server" se representará directamente en el resultado HTML donde no tendrá ninguna funcionalidad y solo romperá la validación HTML.

entrada es un elemento HTML que tiene solo propiedades HTML, y definitivamente no hay métodos de ningún tipo.

+2

La segunda opción funciona bien, y es también un control de servidor. Definitivamente tiene métodos. – Guffa

+0

fuera de la base, la segunda forma no solo es valiosa, sino que es útil porque ASP – annakata

+0

no la abstrae. La segunda opción crea una instancia de System.Web.UI.HtmlControls.HtmlInputButton que se representará como (a menos que esté dentro de un INamingContainer que lo hará munge el id). En el código subyacente puede modificar (entre otras cosas) su colección de estilos, Visibilidad; use FindControl() y adjunte controladores al evento ServerClick. IMO la principal ventaja de HtmlControls sobre WebControls es el control sobre el marcado (para el estilo y el cumplimiento). – Conceptdev

-1

No hay eventos de servidor asociados con dichos controles, pero puede usarlos en codebehind para cambiar sus propiedades.

+0

Bueno, tiene algunos eventos de servidor como Load y PreRender, pero no eventos de devolución. – Guffa

+0

En realidad, al hacer clic en un HtmlInputButton se desencadenará el evento ServerClick durante la devolución de datos resultante. Sin embargo, no tiene equivalente del evento Command. – stevemegson

0

La primera línea es ASP.NET, el último simple XHTML.

El primero se analiza e interpreta en el lado del servidor, después de lo cual se genera el código HTML, que corresponde prácticamente a su segundo ejemplo. El botón ASP.NET es realmente poco más que una envoltura ligera sobre la funcionalidad del botón de entrada HTML, y debe usarse donde sea que necesite manejar el evento Click en el lado del servidor (o en el caso general de cualquier evento), y generalmente es el camino para ir, ya que está dejando que ASP.NET abstraiga la idea de un botón en su página para usted.

1

El botón representado por <asp:Button runat="server".../> se convertirá en un control de servidor web con un modelo de estado enriquecido y diferentes propiedades y métodos que tienen una representación más clara en el mundo real como Button.Text = "Click Me".

El botón representado por <input type="button" runat="server"..../> se convertirá al control del servidor html representado por HtmlInputButton; tiene propiedades, métodos y eventos limitados. La mayoría de las propiedades se parecen a los equivalentes html como Button.Value = "Click Me".

Tenga en cuenta que los elementos en una página de marcado se procesan previamente/compilan antes de ser utilizados y se convertirán en una representación de clase donde cada elemento se representa mediante un control. Puede acceder a los controles del lado del servidor que se identifican mediante la etiqueta runat = "server" del código subyacente, ya que tendrán el control del servidor correspondiente (web/html), otro contenido estático que incluye una etiqueta <input type="button.../> sin el servidor runat = " "se representará como un LiteralControl".

0

la funcionalidad de ambos controles es la misma con la diferencia que la primera.el control de red y el segundo es el control html que se puede hacer con el control del servidor usando

runat = "server".

y primero es rica en evants y metods THN el segundo ....

Cuestiones relacionadas