EventHandler为null
我试图从用户控件中引发单击事件并在包含页面上处理它。 我遇到的问题是,当我点击用户控件上的’imgstep1’按钮时,imgstep1_click事件后面的代码会触发,但’btnHandler’事件总是为空。 因此它不会调用父事件。
任何有关这方面的帮助将不胜感激。
我的用户控制代码是:
.ascx代码:
.ascx.cs代码:
public delegate void OnImageButtonClick(); public event OnImageButtonClick btnHandler; protected void imgstep1_Click(object sender, ImageClickEventArgs e) { if (btnHandler != null) btnHandler(); }
.aspx页面代码:
protected void Page_Load(object sender, EventArgs e) { ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler); } void ucStepHdr_btnHandler() { Response.Write ('test'); }
代码看起来很简单,可以正常工作。 btnHandler为null的唯一原因可能是因为未调用aspx页面中的事件注册代码。
有回帖吗? 你确定你在页面加载的每个时间添加事件???
ucStepHdr.btnHandler += new StepsHeader.OnImageButtonClick(ucStepHdr_btnHandler);
如果您删除OnClick="imgstep1_Click"
并将其放入ascx.cs中
protected ImageButton imgstep1; protected override void OnInit(EventArgs e) { this.imgstep1.Click += new ImageClickEventHandler(imgstep1_Click); }
这种连接事件的方法是否有效?
它看起来应该可以工作……你可以单步执行调试器中的代码,并在Page_Load中设置它后立即查看ucStepHdr.btnHandler的值是什么? (暂且不说,传统上这些是在init中设置而不是加载,但这不是你的问题。)
- 必须使用dbcontext.Database.SqlQuery声明标量变量’@custid’?
- 访问.cs文件中声明的web方法与ajax中的任何aspx或ascx文件无关(jquery)
- 如何在treeview asp.net C#中获取客户端文件系统目录
- “通用”电话号码的基本正则表达式
- 视图exception后的Nhibernate Lazy Loadexception
- 导致此错误的原因是什么? 执行处理程序’System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerWrapper’的子请求时出错
- 我发布时,swf文件无法读取XML数据
- 将更新进度面板置于中心
- ASP.NET 5中的Web API身份validation