尝试过这样的方法:
HttpApplication app = s as HttpApplication; //s is sender of the OnBeginRequest event
System.Web.UI.Page p = (System.Web.UI.Page)app.Context.Handler;
System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label();
lbl.Text = "TEST TEST TEST";
p.Controls.Add(lbl);
在运行这个程序时,我会得到“对象引用没有设置为对象的实例。
如何在原始文件中的特定loaction处插入两行文本(ASP.NET/html)?以及如何计算文件的扩展名(我只想在ASPX文件上应用这个文件.?)
发布于 2018-06-21 16:43:59
我不确定,但我认为您不能使用HttpModule来更改Page的控制树(如果我错了,请纠正我)。但是,你可以修改HTML标记,但是必须为此编写一个“响应筛选器”。有关示例,请参见http://aspnetresources.com/articles/HttpFilters.aspx,或谷歌的“httpModule响应过滤器”。
发布于 2018-06-21 17:34:30
比你想象的要简单得多:
public void Init(HttpApplication app)
{
app.PreRequestHandlerExecute += OnPreRequestHandlerExecute;
}
private void OnPreRequestHandlerExecute(object sender, EventArgs args)
{
HttpApplication app = sender as HttpApplication;
if (app != null)
{
Page page = app.Context.Handler as Page;
if (page != null)
{
page.PreRender += OnPreRender;
}
}
}
private void OnPreRender(object sender, EventArgs args)
{
Page page = sender as Page;
if (page != null)
{
page.Controls.Clear(); // Or do whatever u want with ur page...
}
}
如果PreRender事件不够,可以在PreRequestHandlerExecute EventHandler中添加所需的任何事件。
https://stackoverflow.com/questions/-100000309
复制相似问题