首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RenderControl不输出子控件HTML

RenderControl不输出子控件HTML
EN

Stack Overflow用户
提问于 2013-02-23 01:03:13
回答 1查看 748关注 0票数 1

我这里有一个复杂的问题。

上下文:我正在编辑一个表单引擎项目,它根据每个请求的XML定义动态地创建它的控件,以添加一个使用Aspose.PDF的PDF生成功能。每个控件及其属性都在xml文件中定义,并对应于一个xml架构。现在,当表单完成时,有一个formRepeater控件,它检索之前填充的页面并格式化数据,以便在web浏览器中打印。我必须替换它来生成pdf文件。

我做了什么:我添加了一个名为GeneratePdf的新抽象方法,所有FormControls都必须实现该方法,并且我为控件容器PreRender事件中的每个控件和子控件调用此方法。根据每个控件的不同,方法会有所不同,但这里是目前的基本方法

代码语言:javascript
复制
    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成功地检索到了我的控件的超文本标记语言,但是如果一个控件作为它们内部的标准ASP.NET控件,那么子控件的超文本标记语言就不会被呈现。为什么?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-23 01:31:07

RenderControl会将子控件HTML化到sb字符串编写器中。

但是,http://www.aspose.com/docs/display/pdfnet/Text+Constructor+Overload_3 Aspose Text不会自动为每个子控件创建段。它期望您传递给它的字符串是针对单个(和当前)段的。

要添加控件的子控件,您需要递归地调用/生成每个子控件。因此,您需要重新构造上面的代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15029447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档