LoadControl из приложения Windows
-
28-09-2019 - |
Вопрос
Можно ли загрузить контакт в приложении Windows?
У меня есть генерация электронной почты в Интернете, но я хочу переместить его в службу Windows для ежемесячной рассылки.
Письма теперь реализованы как usercontrols, таким образом, 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;
Решение
Решение для меня было называть веб-сервис, который смог генерировать HTML из .ascx.
- Передать необходимые параметры в WebService
- В WebService постройте новую страницу, чем LoadControl
- Установите все параметры
- Рендеринг в StringBuilder.
Вы можете увидеть под вопросом кода.
Другие советы
вместо LoadControl
Метод, используемый в ASP.NET, вы можете использовать Controls.Add
Метод родительского контроля. Просто добавьте панель, чтобы быть родителем, то:
UserControl uc1 = new UserControl //this is your usercontrol
Panel1.Controls.Add(uc1);
Не связан с StackOverflow