Quelle est la différence entre Render et RenderControl dans la création WebControl?
-
22-07-2019 - |
Question
J'ai récemment appris à écrire mes propres contrôles Web, mais la différence entre Render et RenderControl reste floue. J'ai commencé à utiliser Render, mais à un moment donné, j'ai commencé à utiliser RenderControl, que j'utilise maintenant exclusivement. Si je prends une mauvaise habitude, je voudrais l’étouffer dans l’œuf avant de me mettre dans mes habitudes.
La solution
RenderControl est utilisé si un contrôle existant fournit ce que vous voulez afin que vous puissiez tirer parti de la façon dont il est rendu.
Le rendu est utilisé si vous devez maîtriser totalement le rendu du code HTML.
Vous pouvez bien sûr combiner les deux pour optimiser l'utilisation de votre temps de programmation ...
MODIFIER
Pour une meilleure explication à ce sujet et un excellent point sur ce qu'il faut utiliser quand, voir la réponse de mhenry1384 a>.
Autres conseils
En voici une bonne lecture: Render vs RenderControl
Extrait des liens:
Le Calculer permet de contrôleur pour se rendre en écrivant Sortie HTML vers le flux de réponse. Cela passe une référence à la Objet HTMLTextWriter, qui peut écrire directement au flux de réponse. Ce méthode doit être utilisée lorsque vous dérivez directement depuis le contrôle.
Le RenderControl est utilisée par la page pour rendre chaque individu contrôle. Il permet au consommateur de votre classe à le rendre, et vous pouvez utilisez-le pour rendre les contrôles enfants si vous utilisez un contrôle composite. En outre, une chose à noter est que cette ne sera pas invoqué si la visibilité propriété sur le contrôle est définie sur faux.
Render est une méthode protégée, ce qui signifie que seules les classes dérivées peuvent y accéder. Il est appelé dans le cycle de vie de l'événement et ne doit pas être appelé explicitement dans votre code.
RenderControl est une méthode publique qui vous permet d’appeler la méthode Render quand vous le souhaitez. Vous l'utiliserez, par exemple, dans un contrôle personnalisé dans lequel vous stockez des contrôles dans le ControlsCollection mais souhaitez les restituer dans leur propre cellule dans un tableau. Par exemple:
writer.Write(""): foreach(Control ctl in Controls) { writer.Write("") ctl.RenderControl(writer); writer.Write(""); } writer.Write("");
Vous devez toujours remplacer Render, et non RenderControl, comme il est appelé dans le cycle de vie d'un événement (comme je l'ai déjà dit)
(à partir de http://forums.asp.net/t/909220.aspx/1 , désolé ma réponse est juste un copier-coller de cela, mais je ne voyais pas grand chose d’écrire la réécriture d’une explication aussi claire que possible)
Je ne comprends toujours pas pourquoi MS n'a pas simplement fait de Render () une méthode publique. Pourquoi un RenderControl () séparé est-il nécessaire? Le raisonnement pour cela est absent de toutes les réponses données jusqu'à présent. La première personne qui peut expliquer cela obtient un vote positif brillant.
RenderControl est utilisé pour que la page rende les contrôles enfants. Le rendu permet à un contrôle individuel de se rendre lui-même.