是否可以在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。

  1. 将必要的参数传递给WebService
  2. 在Web服务中,构建新页面,而不是LoadControl
  3. 设置所有参数
  4. 渲染到StringBuilder。

您可以看到有问题的代码。

其他提示

而不是 LoadControl ASP.NET中使用的方法,您可以使用 Controls.Add 父对照的方法。只需添加一个面板即可成为父母:

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top