Quand utiliser runat=“server” à la normale HTML
Est-il toujours approprié d'utiliser runat="server" sur un élément HTML à la place d'un vrai ASP.NET contrôle? J'ai le plein contrôle sur le réglage de l'html/texte de l'élément normal, alors pourquoi n'aurais-je pas l'utiliser à la place de "maladroit" ASP.NET WebForms de contrôle?
Si l'une est meilleure que l'autre, certains points d'intérêt, je voudrais savoir:
- Les différences de performances entre
- Différence de fonctionnalité
- D'autres différences ne sont pas si évidents?
Un exemple de différence:
<asp:Literal ID="mySpecialHtml" runat="server" />
<div id="mySpecialHtml" runat="server" />
Vous devez vous connecter pour publier un commentaire.
Les deux sont ASP.NET les contrôles serveur. Ceux correspondant à des éléments HTML sont dans le
System.Web.UI.HtmlControls
espace de noms, et les contrôles web sont dans leSystem.Web.UI.WebControls
espace de noms.Les commandes HTML sont plus légers et correspondent exactement à un élément HTML, tandis que les contrôles web ont plus de fonctionnalités et peut être rendu que les différents éléments HTML selon les capacités du navigateur et les paramètres de la commande.
Un contrôle HTML rend un seul élément HTML, alors qu'un contrôle du web est rendu en tant que zéro, un ou plusieurs des éléments HTML. Le
Literal
de contrôle pour l'exemple n'est pas rendu comme à un élément, il ne renvoie son texte. Il existe d'autres contrôles qui ne rend pas tous les éléments en eux-mêmes, comme leRepeater
etPlaceHolder
contrôles. D'autre part, laCheckBoxList
de contrôle, par exemple, est rendu plusieurs élément HTML, untable
en tant que contenant, etinput
éléments pour chaque case à cocher à l'intérieur.Un exemple d'un contrôle qui est rendu à l'aide de différents éléments est la
TextBox
de contrôle, qui sera rendu comme uninput
ou untextarea
élément en fonction de sonTextMode
propriété.Les contrôles web ont plus de fonctionnalités, mais aussi utilise plus de ressources. Ils ont plus de propriétés et de soutenir des choses comme des thèmes et de la liaison de données. De nombreux contrôles web de mettre les données dans le
ViewState
, qui est envoyé dans le cadre de la page. Si vous n'êtes pas prudent, leViewState
peut être assez grande, et d'affecter le temps de chargement de la page.La seule raison pour laquelle j'ai utilisé le serveur contrôles html est quand j'ai besoin de la flexibilité de l'écriture de mon propre code html, mais encore besoin d'accéder à ses propriétés dans le code derrière.
Dans le code behind:
ASP.NET analyseur interprète éléments html standard w/runat="server" tag contrôles serveur html. Exemple:
est interprété comme
Sachez que si vous utilisez runat="server" que vous utilisez HTML correspondant Serveur de contrôle.
En outre, ASP.NET contient un ensemble de contrôles Serveur Web, c'est à dire le contrôle de lien Hypertexte, qui offrent plus de fonctionnalités, plus de propriétés, événements, etc. mais peut être plus lente dans certains cas.
Je préfère utiliser les contrôles html quand il n'y a plus de travail sur le côté client, et l'utilisation asp.net les contrôles lorsqu'il n'y a plus de travail sur le côté serveur ( code derrière ).
Je crois ASP.NET utilise un ensemble différent de contrôles Serveur Web qui habituellement a beaucoup plus de fonctionnalités, mais il est vraiment à votre préférence. Si votre travail est surtout côté serveur, je collerais avec ASP.NET les contrôles.