2010-02-04 12 views
2

Je suis fournir en sortie l'ensemble HTML pour mon contrôle serveur comme suit:Ce qui est plus efficace pour le rendu d'un contrôle serveur dans ASP.NET

public override void Render(HtmlTextWriter output) 
{ 
    output.Write(myStringBuilder.ToString()); 
} 

myStringBuilder est un objet StringBuilder qui est construit manuellement dans une méthode privée séparée .

Est-ce un moyen efficace de le faire? Ou est-il préférable de passer le HtmlTextWriter à ma méthode privée et faire plusieurs appels à HtmlTextWriter.Write()?

+0

Avez-vous besoin de sortie de contrôle au format HTML, non? –

+0

Oui, la sortie est généralement des extraits HTML. Dans certains cas, je fais une transformation XSL sur un DataTable et je produis ce résultat (qui est du HTML). – frankadelic

Répondre

6

Il est plus efficace de passer le HtmlTextWriter à votre méthode, puis d'écrire dans le flux de sortie, sans mettre en mémoire tampon plusieurs chaînes.

En fait, c'est la façon dont les webcontrols dans le framework .Net sont. À un niveau élevé, il est beaucoup de passer le même HtmlTextWriter dans toutes les méthodes de rendu. Habituellement, lorsque vous faites beaucoup de lecture/écriture, traiter avec un flux est plus efficace ... ce qui est finalement ce que vous faites (le flux étant le flux de réponse dans ce cas).

Clause de non-responsabilité: Ceci est une petite optimisation à moins que vous ne créiez quelque chose de monolithique ... mais une optimisation néanmoins.

+0

Et pour l'amour du code, ne pensez pas que lancer un cordonnier dans le mix aidera les choses. :) –