asp.net: differenza tra runat = “server” e controlli server
-
22-08-2019 - |
Domanda
Qual è la differenza di funzionalità tra
<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />
e
<input type="button" id="button1" runat="server" value="Click me" />
Fa l'input con attributo runat = "server" ha altre o limitate proprietà e metodi?
Grazie!
Soluzione
Il primo crea un System.Web.UI.WebControls.Button
mentre il secondo crea un System.Web.UI.HtmlControls.HtmlInputButton
.
Entrambi sono controlli server, ma i controlli nello spazio dei nomi WebControls
ha generalmente un po 'più funzionalità rispetto ai controlli nello spazio dei nomi HtmlControls
. In genere hanno messo alcuni dati in ViewState
per tenere traccia del loro stato, e hanno gli eventi di postback lato server.
Ogni controlli nello spazio dei nomi HtmlControls
corrispondono esattamente a un elemento HTML, mentre i controlli nello spazio dei nomi WebControls
possono essere resi in modo diverso a seconda di ciò che il browser che richiede la pagina in grado di supportare.
Altri suggerimenti
Il pulsante rappresentato da <asp:Button runat="server".../>
verrà convertito in un controllo server Web con un ricco modello di stato e diverse proprietà e metodi che ha rappresentazione più chiara nel mondo reale come Button.Text = "Click Me".
Il pulsante rappresentato da <input type="button" runat="server"..../>
verrà convertito in controllo server HTML rappresentato da HtmlInputButton; con ha limitato proprietà, metodi ed eventi. La maggior parte delle proprietà assomigliano gli equivalenti HTML come Button.Value = "Click Me".
Si noti che gli elementi in una pagina markup sono pre-elaborati / compilati prima di essere utilizzato e saranno convertiti in una rappresentazione classe in cui ogni elemento è rappresentato da un controllo. È possibile accedere ai controlli lato server che sono identificati dal runat = tag "server" dal codice dietro dal momento che avranno il controllo corretto abbinamento del server (web / html), altri contenuti statici tra cui un tag <input type="button.../>
con il runat = "server "sarà rappresentato come un LiteralControl.
La prima linea è ASP.NET, quest'ultimo semplice XHTML.
L'ex ottiene analizzato e interpretato sul lato server, dopo di che viene generato il codice HTML, che più o meno corrisponde al secondo esempio. Il pulsante ASP.NET è davvero poco più di involucro luce sulle funzionalità del pulsante di ingresso th HTML, e dovrebbe essere usato ovunque sia necessario per gestire l'evento Click
sul lato server (o nel caso generale tutti gli eventi), e di solito è il modo in cui andare, dal momento che si sta lasciando ASP.NET astratto l'idea di un tasto sulla tua pagina per voi.
funzionalità di entrambi i controlli è lo stesso con la differenza che prima è Controllo NET e seconda è controllo html che può essere fatto servercontrol utilizzando
runat = "server".
e primo è ricco di evants e metods THN il secondo ....
Non ci sono eventi server associati con tali controlli, ma è possibile utilizzarlo in codebehind di cambiare le sue proprietà.
La seconda opzione non sarà probabilmente anche il lavoro. runat = "server" sarà reso direttamente all'uscita HTML dove avrà alcuna funzionalità e si rompe solo la convalida HTML.
ingresso è un elemento HTML che ha solo proprietà HTML, e sicuramente esistono metodi di alcun tipo.