从ASPX文件填充动态实例化页面的控件?

时间:2011-12-13 15:10:50

标签: c# asp.net dynamic webforms httphandler

目前我有一个 Example.aspx 文件(后面没有代码),我想加载它,填充它拥有的控件,得到它的输出并使用它做某事(在http处理程序内)。

我正在做的是:

// Gets the page and instantiates it?
Type type = BuildManager.GetCompiledType("~/Example.aspx");
Page page = (Page)Activator.CreateInstance(type);

// ProcessRequest of page here?

// Error happens here, the page doesn't have any controls (but there is a label).
((Label)page.FindControl("Label")).Text = "Hello World";

using (StringWriter output = new StringWriter())
{
    // Execute the page and output the result into the string writer.
    HttpContext.Current.Server.Execute(page, output, false);

    // Do something with the output (or save it, email it, etc)
    // ...in this case we render it.
    context.Response.ContentType = "text/html";
    context.Response.Write(output.ToString());
}

但它不起作用,因为页面实例没有任何控件(需要创建子控件?)。

如果我添加:

page.ProcessRequest(HttpContext.Current);

它有效,但我认为它运行整个页面生命周期,包括将页面呈现给响应,这是我不想要的。

1 个答案:

答案 0 :(得分:1)

使用激活器创建页面实例时,您可以连接init或load事件以在执行http请求时执行其他代码。别忘了它仍然是一个事件驱动的模型!我希望它有所帮助。