Contesto: voglio creare un controllo che generi html "puro" a mia completa discrezione.
Quasi-soluz. 1: creo uno user control contenente solo un literal. Creo un metodo di rendering che costruisce la stringa html e la assegna alla proprietà Text del literal. Se non ho bisogno di settare proprietà dal codice che utilizza lo user control posso richiamare il metodo di rendering sul page load. In caso contrario devo dichiarare come public il metodo di rendering e chiamarlo esplicitamente dal codice utilizzatore dopo aver impostato le proprietà necessarie (magari per definire la sorgente dati).
Soluzione 2: sovrascrivo il metodo di rendering che tutti i controlli utilizzano; in tale metodo genero la stringa html. In questo caso non ho bisogno di definire come pubblico il metodo di rendering e non devo chiamarlo esplicitamente. Inoltre non mi serve il literal (lo user control è vuoto); utilizzo l'oggetto output di tipo HtmlTextWriter.
protected override void Render(HtmlTextWriter output)
{
htmlStringBuilder.Append(" ...
htmlStringBuilder.Append("
");
output.Write(htmlStringBuilder.ToString());
}