我在这里遇到了一个复杂的问题。RenderControl不输出子控件HTML
上下文: 我正在编辑一个表单引擎项目,它根据每个请求上的XML定义动态创建它的控件,以使用Aspose.PDF添加PDF生成功能。简而言之,表单引擎作为一组控件,充当表单(文本框,电话号码,日期控件等)的基本功能,每个控件和它的属性都在xml文件中定义,并对应于一个xml架构。现在,当表单完成时,会有一个formRepeater控件,用于检索先前填充的页面并格式化要在Web浏览器中打印的数据。我必须将其替换为生成PDF文件。
我做了什么: 我添加了一个名为GeneratePdf的新的抽象方法,所有的FormControls都必须实现,我为控件容器PreRender事件中的每个控件和子控件调用此方法。该方法会不同,这取决于每个控件,但这里是基本的一个,现在
public override void GeneratePdf(Aspose.Pdf.Generator.Pdf file)
{
//Add the control HTML in a new section of the PDF File
var section = file.Sections.Add();
var sb = new StringBuilder();
var writer = new HtmlTextWriter(new StringWriter(sb));
this.RenderControl(writer);
var html = new Aspose.Pdf.Generator.Text(section, sb.ToString());
html.IsHtmlTagSupported = true;
section.Paragraphs.Add(html);
}
我的问题: 我成功地检索使用StringBuilder我的控件的HTML,但如果控制作为标准配置ASP.NET控件内部,子控件的HTML不呈现。为什么?
感谢,