asp.net: diferença entre runat = “server” e controles de servidor
-
22-08-2019 - |
Pergunta
Qual é a diferença em termos de funcionalidade entre
<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />
e
<input type="button" id="button1" runat="server" value="Click me" />
Será que a entrada com runat = "server" atributo tem outros ou limitados propriedades e métodos?
Obrigado!
Solução
O primeiro cria um System.Web.UI.WebControls.Button
enquanto o segundo cria uma System.Web.UI.HtmlControls.HtmlInputButton
.
Ambos são controles de servidor, mas os controles no namespace WebControls
geralmente tem um pouco mais funcionalidade do que os controles no namespace HtmlControls
. Normalmente eles colocam alguns dados em ViewState
manter o controle de seu estado, e eles têm eventos de postback do lado do servidor.
Cada controles no correspondem HtmlControls
namespace exatamente a um elemento HTML, enquanto os controles no namespace WebControls
pode ser processado de maneira diferente dependendo do que o navegador que está solicitando a página pode suportar.
Outras dicas
O botão representado por <asp:Button runat="server".../>
será convertido em um controle de servidor Web com um modelo de estado rico e diferentes propriedades e métodos que tem representação mais clara no mundo real, como Button.Text = "Clique-me".
O botão representado por <input type="button" runat="server"..../>
será convertido para controle de servidor html representado por HtmlInputButton; com limitou propriedades, métodos e eventos. A maioria das propriedades se assemelham aos equivalentes do HTML como Button.Value = "Clique-me".
Note-se que os elementos de uma página de marcação são pré-processados ??/ compilado antes de ser usado e será convertido para uma representação de classe, onde cada elemento é representado por um controlo. Você pode acessar os controles do lado do servidor que são identificados pela runat = tag "server" do código por trás, uma vez que terá o controle de servidor de correspondência correto (web / html), outro conteúdo estático, incluindo uma tag <input type="button.../>
com o runat = "server "será representada como uma LiteralControl.
O ex-linha é ASP.NET, este último simples XHTML.
O primeiro é analisado e interpretado no lado do servidor, após o qual o código HTML é gerado, que praticamente corresponde ao seu segundo exemplo. O botão ASP.NET é realmente pouco mais do invólucro luz sobre th funcionalidade do botão de entrada HTML, e deve ser usado onde quer que você precisa para lidar com o evento Click
no lado do servidor (ou no caso geral eventos), e é geralmente a maneira para ir, uma vez que você está deixando ASP.NET abstrair a idéia de um botão na sua página para você.
funcionalidade de ambos os controlos é igual com a diferença de que em primeiro lugar é um controle de NET e um segundo controlo é HTML que podem ser feitas usando ServerControl
runat = "server".
e primeiro é rica em evants e metods THN o segundo ....
Não há eventos do servidor associados a tais controles um, mas você pode usá-lo em codebehind para mudar suas propriedades.
A segunda opção não irá, provavelmente, ainda trabalho. runat = "server" será processado diretamente para a saída HTML, onde ele não terá funcionalidade e só vai quebrar a validação HTML.
entrada é um elemento HTML que tem apenas propriedades HTML, e definitivamente nenhum método de qualquer tipo.