Quando c'è bisogno di generare un template abbastanza complesso, ad esempio con dati prelevati da database, può tornare utile la classe StringWriter, che in accoppiata con quella HtmlTextWriter consente di "scrivere" in una stringa l'output HTML di un web control.
Nell'esempio qui riportato il template è caricato da un semplice user control EmailOrder.ascx, che riceve attraverso il Context l'OrderID e genera a partire da quest'ultimo il template con i dati di riepilogo dell'ordine da inviare via e-mail.
// passo informazioni attraverso il Context
Context.Items["OrderID"] = orderID;
// carico il template - in email.ascx leggo il Context
Control template = LoadControl("EmailOrder.ascx");
// "scrivo" in una stringa il codice HTML generato dal template
string text;
using (StringWriter sw = new StringWriter())
using (HtmlTextWriter source = new HtmlTextWriter(sw))
{
template.RenderControl(source);
text = sw.ToString();
}
// inviamo l'HTML via e-mail - vedere #365
m.BodyFormat = MailFormat.Html;
m.Body = text;Per testare il corretto funzionamento dell'user control è sufficiente inserirlo in una pagina di test.
Lo script funziona anche con e-mail plain text, a patto che ci siano control all'interno del template che non producono codice HTML, come ad esempio Repeater o Literal.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


