目前我有一个 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);
它有效,但我认为它运行整个页面生命周期,包括将页面呈现给响应,这是我不想要的。
答案 0 :(得分:1)
使用激活器创建页面实例时,您可以连接init或load事件以在执行http请求时执行其他代码。别忘了它仍然是一个事件驱动的模型!我希望它有所帮助。