51 votes

Comment obtenir la sortie HTML d'un UserControl dans .NET (C #)?

Si je créer un UserControl et ajouter quelques objets, comment puis-je récupérer le code HTML qu'il rendrait?

ex.

UserControl myControl = new UserControl();
myControl.Controls.Add(new TextBox());

// ...something happens

return strHTMLofControl;

J'aimerais convertir un nouvellement construit UserControl à une chaîne de HTML.

Réponse (ci-dessous):

À l'aide de azamsharps'méthode a fonctionné - voici l'exemple de code:

TextWriter myTextWriter = new StringWriter();
HtmlTextWriter myWriter = new HtmlTextWriter(myTextWriter);

myControl.RenderControl(myWriter);

return myTextWriter.ToString();

Vous devrez être en utilisant le Système.IO (pour avoir la classe StringWriter).

57voto

azamsharp Points 7107

Vous pouvez rendre le contrôle en utilisant Control.RenderControl(HtmlTextWriter) .

Nourrir StringWriter au HtmlTextWriter .

Nourrir StringBuilder au StringWriter .

Votre chaîne générée sera à l'intérieur de l'objet StringBuilder .

32voto

Ben Points 6629
//render control to string
StringBuilder b = new StringBuilder();
HtmlTextWriter h = new HtmlTextWriter(new StringWriter(b));
this.LoadControl("~/path_to_control.ascx").RenderControl(h);
string controlAsString = b.ToString();

15voto

theJerm Points 1521
UserControl uc = new UserControl();
MyCustomUserControl mu = (MyCustomUserControl)uc.LoadControl("~/Controls/MyCustomUserControl.ascx");

TextWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);

mu.RenderControl(hw);

return tw.ToString();

4voto

Xian Points 33986

remplacer la méthode REnderControl

 protected override void Render(HtmlTextWriter output)
{       
   output.Write("<br>Message from Control : " + Message);       
   output.Write("Showing Custom controls created in reverse" +
                                                    "order");         
   // Render Controls.
   RenderChildren(output);
}
 

Cela vous donnera accès au rédacteur sur lequel sera écrit le code HTML.

Vous voudrez peut-être également examiner l'architecture de contrôle adaptatif d' asp.net . L'architecture de contrôle adaptatif d'asp.net peut vous permettre de «modeler» la sortie HTML par défaut des contrôles.

1voto

Joel Coehoorn Points 190579

Appelez la méthode .RenderControl() .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X