LoadControl из приложения Windows - PullRequest
       14

LoadControl из приложения Windows

2 голосов
/ 26 ноября 2010

Возможно ли загрузить LoadControl в приложении Windows?

У меня есть создание электронной почты как веб, но я хочу переместить ее в службу Windows для ежемесячного информационного бюллетеня.

Письма теперь реализованы как пользовательские элементы управленияТаким образом, html человек может легко изменить внешний вид.

Текущая реализация рендеринга выглядит следующим образом:

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;

Ответы [ 2 ]

1 голос
/ 12 декабря 2010

Решением для меня было вызвать веб-сервис, который мог генерировать HTML из .ascx.

  1. Передать необходимые параметры в веб-сервис
  2. в Webservice, создать новую страницу,LoadControl
  3. Установить все параметры
  4. Выполнить рендеринг в StringBuilder.

Вы можете увидеть рассматриваемый код.

0 голосов
/ 27 ноября 2010

вместо метода LoadControl, используемого в asp.net, вы можете использовать Controls.Add метод родительского элемента управления. Просто добавьте панель в качестве родительской:

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
...