public partial class Template2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page page = new Page();//这里新建了一个page对像,不是当前的page对像
System.Web.UI.UserControl control = (System.Web.UI.UserControl)page.LoadControl("/Pay/Nav.ascx");
page.Controls.Add(control);//在新建的page对像中加载进去
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter wt = new HtmlTextWriter(tw);
page.RenderControl(wt);//在新建的page对像 输出html
//control.RenderControl(wt);
Response.Write(tw.ToString());
}
} public partial class Nav : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e) //在新建的page不执行load事件
{
Response.Write("OK"); }
}
问:
如何在new page里面添加的用户控件加载的时候执行page_load 也就是要和原请求的页面执行一样的过程谢谢
-----
不是很明白我试试上面的!
Server.Execute(page, writer, false);
Response.Write(writer.ToString());
-----------------
是不是因为new page出来的不执行onload方法 呢?还有,如何把当前的Request对像传给 new Page()出来的page
因为:
Server.Execute(page, writer, false);
那边Request得到的对像和当前页面的Request对像不一样谢谢
<%@ WebHandler Language="C#" Class="Handler" %>using System;
using System.Web;public class Handler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain"; System.Web.UI.Page page = new System.Web.UI.Page();
System.Web.UI.Control control = page.LoadControl("~/UserControl/Nav.ascx"); page.Controls.Add(control); System.IO.StringWriter writer = new System.IO.StringWriter(); context.Server.Execute(page, writer, false);
context.Response.Write(writer.ToString());
context.Response.End();
}
public bool IsReusable {
get {
return false;
}
}}
--------------------------------------------
恩,是的
还有,如何把当前的Request对像传给 new Page()出来的page
因为:
Server.Execute(page, writer, false);
那边Request得到的对像和当前页面的Request对像不一样谢谢
----------------------------Server.Execute(page, writer, true);即可
public partial class Nav : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e) //在新建的page不执行load事件
{
Response.Write("OK");
Response.Write(System.Web.HttpContext.Current.Request.QueryString["guid"]); }
}得没有得到我的Template2.aspx?guid=111
-----------------
我想是因为我的这个page是new 出来的,他根本就不会有当前页的Request一样的对像
所以在Server.Execute的时候就得到不这个guid=111那应该怎么写呢?