积极答复者
使用Response.Redirect重定向的页面,不能触发button事件

问题
-
RT。我用HttpModule代理的形式,实现页面重定向,局部代码如下:
public class UrlReWriteHttpModule : IHttpModule { public UrlReWriteHttpModule() { // //TODO: 在此处添加构造函数逻辑 // } public void Dispose() { //throw new Exception("The method or operation is not implemented."); } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(context_BeginRequest); } void context_BeginRequest(object sender, EventArgs e) { (此处省略了一些代码) HttpContext Context = (sender as HttpApplication).Context; Context.Response.Redirect(DictionaryClass.Str_FakePath); } }
使用这种方式生成了index.aspx页面,点击页面上的按钮button,并不能触发到button_Click事件,而是再次进入 HttpModule代理,去请求index.aspx页面。结果可想而知,就是刷新了一下页面而已。现在不知道如何解决,才能够触发按钮事件。
答案
-
按钮事件必须先有按钮对象,才能触发这个事件。
按钮对象存在于页面之上,没有页面也就没有按钮。
页面对象在请求到服务器之后,对处理程序映射之后才会创建。
你现在在 BeginRequest 中就已经重定向了,连页面对象都没有,自然不会触发按钮事件了。
你在这里的重定向要做什么呢?如果没有什么需要处理,删掉重定向的代码,自然就解决了。
冠军
- 已标记为答案 moon_prince 2012年8月18日 2:54
-
你这个button的button_click事件是服务端的还是客户端的?如果是服务端的,是需要postback的,就会刷新,如果是客户端的在button_click事件内return false.
- 已标记为答案 moon_prince 2012年8月18日 2:54
全部回复
-
按钮事件必须先有按钮对象,才能触发这个事件。
按钮对象存在于页面之上,没有页面也就没有按钮。
页面对象在请求到服务器之后,对处理程序映射之后才会创建。
你现在在 BeginRequest 中就已经重定向了,连页面对象都没有,自然不会触发按钮事件了。
你在这里的重定向要做什么呢?如果没有什么需要处理,删掉重定向的代码,自然就解决了。
冠军
- 已标记为答案 moon_prince 2012年8月18日 2:54
-
你这个button的button_click事件是服务端的还是客户端的?如果是服务端的,是需要postback的,就会刷新,如果是客户端的在button_click事件内return false.
- 已标记为答案 moon_prince 2012年8月18日 2:54