来自Windows应用程序的LoadControl

时间:2010-11-26 18:10:59

标签: asp.net httpcontext loadcontrol

是否可以在Windows应用程序中使用LoadControl?

我将电子邮件生成为网络,但我想将其移至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;

2 个答案:

答案 0 :(得分:1)

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

  1. 将必要的参数传递给 webservice
  2. 在Webservice,Build中 新页面,而不是LoadControl
  3. 设置所有参数
  4. 渲染到 StringBuilder的。
  5. 你可以看到有问题的代码。

答案 1 :(得分:0)

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

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);