C# ASP.NETWeb表单动态基页或钩页加载事件(从外部)
我有大量的aspx页面。我想从所有aspx页面加载事件触发一个公共函数,但为此,我需要在所有aspx页面的所有页面加载事件中添加函数调用。因此,我正在寻找一个简单的把戏,我可以从我的网站上的所有aspx页面的所有页面加载事件中调用函数 所以,是否可以从外部钩住页面加载事件,或者我们是否可以创建一个将动态附加所有aspx页面的基本页面 但我不是指像这样的基本页面C# ASP.NETWeb表单动态基页或钩页加载事件(从外部),c#,asp.net,C#,Asp.net,我有大量的aspx页面。我想从所有aspx页面加载事件触发一个公共函数,但为此,我需要在所有aspx页面的所有页面加载事件中添加函数调用。因此,我正在寻找一个简单的把戏,我可以从我的网站上的所有aspx页面的所有页面加载事件中调用函数 所以,是否可以从外部钩住页面加载事件,或者我们是否可以创建一个将动态附加所有aspx页面的基本页面 但我不是指像这样的基本页面 public partial class MyBase: System.Web.UI.Page { } public partial
public partial class MyBase: System.Web.UI.Page
{
}
public partial class index : MyBase
{
}
上面的方法我不想解决问题,因为如果我按照上面的方法,那么我必须编辑我网站中的所有aspx页面。我需要任何简单的技巧来钩住页面加载事件
请引导我
编辑
我正在检查cookie值…如果没有找到,请重定向到country.aspx。所以,当country.aspx加载时,代码再次尝试重定向到country.aspx…..无限循环开始。
指导我如何为这种情况编写代码。谢谢听起来你需要一份工作
然后,您的代码应该如下所示
public class MyModule : IHttpModule
{
public void Init(HttpApplication application)
{
//hook your onload event here. There are other events that could be more suitable
app.PreRequestHandlerExecute += OnBeforeExecute;
}
private void OnBeforeExecute(Object sender, EventArgs e)
{
var app = (HttpApplication) sender;
HttpContext context = app.Context;
//insert your code here
}
public void Dispose()
{
}
}
不要忘记查看上面链接中的模块注册部分
注意:asp.net管道中还有许多事件被触发,请查看这些事件的列表。也许有一个更合适的活动取决于你需要做什么
编辑
既然你发布了代码,你可以做一些事情来改进它
HttpContext context = app.Context;
if(context.Request.RawUrl.IndexOf("country.aspx",StringComparison.InvariantCultureIgnoreCase) > -1)
{
return;
}
//rest of your code here
旁白:你应该能够自己解决这个问题。我看了一下你的个人资料页面,你问了将近一千个问题,我列举的这些问题应该很容易让你自己去研究和解决。有些事情告诉我你把所有的程序都委托给了这么多人。您从我这里得到了-1。您考虑过HTTPM模块吗?您的问题不够详细,无法知道页面是否需要了解函数。OnBeforeExecute何时启动?它会在任何aspx页面加载之前触发吗?plzz指南。thanks@Thomas:如果您访问此页面并向中间滚动,您可以在表中看到请求生存期内激发的事件列表。上面的OnBeforeExecute连接到PreRequestHandlerExecute,所以它将在页面的PageLoad事件之前触发。MSDN声明:您的解决方案不好。OnBeforeExecute()正在再次调用&再次调用并启动一个无限循环。每个请求都会触发一次事件,但少数可能会触发的事件除外。然而,无限循环的事情不应该发生,当然,除非代码中的某个地方有无限循环。您应该检查访问日志(iis日志),以查看应用程序中的请求是否有可疑之处。您可能还希望将模块的代码粘贴到此处以查看。
HttpContext context = app.Context;
if(context.Request.RawUrl.IndexOf("country.aspx",StringComparison.InvariantCultureIgnoreCase) > -1)
{
return;
}
//rest of your code here