LoadControl da un'applicazione Windows
-
28-09-2019 - |
Domanda
E 'possibile LoadControl in applicazione delle finestre?
Non ho generazione e-mail e web, ma voglio spostarlo in servizio di Windows per il bollettino mensile.
Messaggi di posta elettronica ora sono implementate come controlli utente, in questo modo persona HTML può facilmente modificare look & feel.
Attualità sguardi di implementazione di rendering come:
StringBuilder sb = new StringBuilder(4000);
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page page = new Page();
EmailTemplateBase emailCtrl = (EmailTemplateBase)page.LoadControl(
"Controls/EmailTempaltes/Template.ascx");
// Exception here
emailCtrl.DataContext = dataContext;
emailCtrl.Parameter = parameter;
emailCtrl.RenderMode = renderMode;
emailCtrl.DataBind();
emailCtrl.RenderControl(htw);
subject = emailCtrl.Subject;
string MessageText = sb.ToString().Replace("\t", "").Replace(Environment.NewLine, "");
return MessageText;
Soluzione
soluzione per me è stato quello di chiamare il servizio web, che è stato in grado di generare codice HTML dal ascx.
- passare i parametri necessari per webservice
- in Webservice, Costruire nuova pagina, che LoadControl
- Imposta tutti i parametri
- Do rendering StringBuilder.
E 'possibile visualizzare il codice in questione.
Altri suggerimenti
invece del metodo LoadControl
utilizzato in asp.net, è possibile utilizzare il metodo Controls.Add
del controllo padre. Basta aggiungere un pannello per essere il genitore poi:
UserControl uc1 = new UserControl //this is your usercontrol
Panel1.Controls.Add(uc1);