Question

Est-il possible de LoadControl dans l'application Windows?

Je génération d'email web, mais je veux le déplacer vers les fenêtres service bulletin mensuel.

Les e-mails sont mis en œuvre maintenant comme UserControls, de cette façon personne html peut facilement modifier look & feel.

regarde en cours de mise en œuvre comme le rendu:

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;
Était-ce utile?

La solution

solution pour moi était d'appeler le service Web, ce qui a pu générer Html de .ascx.

  1. passer des paramètres nécessaires à webservice
  2. dans Webservice, Build nouvelle page, que LoadControl
  3. Régler tous les paramètres
  4. Do rendu à StringBuilder.

Vous pouvez voir le code en question.

Autres conseils

au lieu de la méthode utilisée dans LoadControl asp.net, vous pouvez utiliser la méthode de Controls.Add du contrôle des parents. Il suffit d'ajouter un panneau pour être le parent alors:

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top