从 Windows 应用程序加载控件

发布于 2024-10-04 10:10:46 字数 780 浏览 0 评论 0原文

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

我有网络电子邮件生成功能,但我想将其移动到 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;

Is it possible to LoadControl in windows application?

I have email generation as web, but I want to move it to windows service for monthly newsletter.

Emails now are implemented as UserControls, in this way html person can easily modify look & feel.

Current rendering implementation looks like:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仅此而已 2024-10-11 10:10:46

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

  1. 将必要的参数传递给
    Webservice中的webservice
  2. ,构建
    new Page,然后将LoadControl
  3. 设置所有参数
  4. 进行渲染
    字符串生成器。

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

Solution for me was to call web service, which was able to generate Html from .ascx.

  1. Pass necessary parameters to
    webservice
  2. in Webservice, Build
    new Page, than LoadControl
  3. Set all parameters
  4. Do rendering to
    StringBuilder.

You can see code in question.

亚希 2024-10-11 10:10:46

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

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);

instead of the LoadControl method used in asp.net, you can use Controls.Add method of the parent control. Just add a panel to be the parent then:

UserControl uc1 = new UserControl //this is your usercontrol

Panel1.Controls.Add(uc1);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文