如何将控件呈现的HTML写入字符串

时间:2012-02-02 00:10:50

标签: asp.net user-controls render

对于电子商务系统,在下订单后,我有一个显示订单详细信息的自定义用户控件。我还想将相同的订单详细信息写入电子邮件,因此我想将用户控件的内容写入我可以添加到电子邮件正文的字符串中。

我尝试使用RenderControl,但是没有填充用户控件上任何动态填充的标签控件。

    StringBuilder sb = new StringBuilder();
    StringWriter sw = new StringWriter(sb);
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    OrderDetails1.RenderControl(htw);
    return sb.ToString();

我发现其他地方我可以将控件添加到页面然后将页面的输出写入字符串但这感觉很糟糕。

似乎我应该能够在首次渲染时捕获控件的内容,这样我就不必重新填充它并重新渲染它。谁知道怎么做?

如果没有,那么填充控件的最简洁方法是什么?

1 个答案:

答案 0 :(得分:2)

原来RenderControl代码是正确的,我只需要调用控件FillData()函数来重新填充数据库中的控件。

private string RenderOrderInfo()
{
    //TODO: Should be able to use RenderControl for this and delete everything beyond the 1st 3 lines
    StringBuilder sb = new StringBuilder();
    StringWriter sw = new StringWriter(sb);
    HtmlTextWriter htw = new HtmlTextWriter(sw);
    OrderDetails1.FillData();
    OrderDetails1.RenderControl(htw);
    return sb.ToString();
}