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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top