2

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

2 回答 2

1

我的解决方案是调用 Web 服务,它能够从 .ascx 生成 Html。

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

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

于 2010-12-11T22:12:15.113 回答
0

而不是LoadControlasp.net中使用的方法,您可以使用Controls.Add父控件的方法。只需添加一个面板作为父级然后:

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
于 2010-11-26T21:04:52.850 回答