来自Windows应用程序的LoadControl
-
28-09-2019 - |
题
是否可以在Windows应用程序中加载Concontrol?
我将电子邮件生成作为网络,但我想将其转移到Windows Service以获取每月新闻通讯。
现在将电子邮件作为USERCORTROL实现,以这种方式,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;
解决方案
对我来说,解决方案是致电Web服务,该服务能够从.ascx生成HTML。
- 将必要的参数传递给WebService
- 在Web服务中,构建新页面,而不是LoadControl
- 设置所有参数
- 渲染到StringBuilder。
您可以看到有问题的代码。
其他提示
而不是 LoadControl
ASP.NET中使用的方法,您可以使用 Controls.Add
父对照的方法。只需添加一个面板即可成为父母:
UserControl uc1 = new UserControl //this is your usercontrol
Panel1.Controls.Add(uc1);
不隶属于 StackOverflow