【问题标题】:Trying to get the HTML of a control in a IHttpHandler试图在 IHttpHandler 中获取控件的 HTML
【发布时间】:2012-11-06 10:57:32
【问题描述】:

我创建了一个实现 IHttpHandler 的类,我需要它来返回我制作的数据绑定用户控件的呈现 HTML。虽然我可以让它工作,但它并没有像我希望的那样工作......基本上,我创建了一个新的 Page(),并向其中添加了一个中继器,将该中继器的项目模板设置为我的用户控件(.ascx),设置数据源,然后进行数据绑定。最后,我要求它进行渲染,然后收集该 HTML 并将其发送回管道。

问题是只有我的用户控件上的任何控件的 Render() 方法被触发,没有 Init()、Load() 等事件。为什么是这样?我怎样才能让它们像你通常期望的那样开火?

StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);

Page page = new Page();
Repeater rpt = new Repeater();

page.Controls.Add(rpt);

rpt.ItemTemplate = ResourceServices.LoadTemplate("mytemplate.ascx");
rpt.DataSource = datasource;
rpt.DataBind();

rpt.RenderControl(hw);

HTML = sb.ToString();

【问题讨论】:

    标签: c# asp.net .net-3.5 page-lifecycle ihttphandler


    【解决方案1】:

    您需要执行页面才能触发事件。尝试将您的 RenderControl 行替换为:

    context.Server.Execute(page, hw, false);
    

    http://msdn.microsoft.com/en-us/library/ms150027.aspx

    【讨论】:

    • 啊哈!非常感谢,为我节省了很多黑客攻击!完全忘记了那个方法……天哪!
    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    相关资源
    最近更新 更多