【问题标题】:How can I render an ASP .NET user control outside of the ASP .NET runtime?如何在 ASP .NET 运行时之外呈现 ASP .NET 用户控件?
【发布时间】:2011-10-11 18:10:19
【问题描述】:

我正在使用 ASP .NET 用户控件生成 HTML 电子邮件,如下所示

private string GetHtml(object myData)
{
    var page = new Page();
    var control = page.LoadControl("~/path/to/myEmailControl.ascx");
    page.Controls.Add(control);
    control.DataBind(myData);
    return RenderControlToHtml(control);
}

private string RenderControlToHtml(Control control)
{
    var builder = new StringBuilder();
    control.RenderControl(new HtmlTextWriter(new StringWriter(builder)));
    return builder.ToString();
}

当我从 Web 项目中使用它时,它工作得很好,但最近我们在解决方案中添加了一个 Windows 应用程序,它也需要使用此代码。

关于如何让代码在 ASP .NET 运行时之外工作,是否有人有任何建议?一旦我有了一个控件的实例,我应该能够渲染它,但问题在于从 ascx 文件加载控件。

【问题讨论】:

  • 行 page.LoadControl("~/path/to/myEmailControl.ascx") 将不起作用,因为没有 Web 路径。如果用新的 EmailControl 交换它会怎样?并将控件重写为自定义控件。

标签: asp.net


【解决方案1】:

您应该将控件从 usercontrol 更改为 customcontrol。比你可以使用控件上的渲染方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多