未触发动态 ImageButton ImageClickEventHandler

问题描述

我在网页上创建了一个按钮,单击该按钮时将从 Server.MapPath(...) 获取图像并将图像转换为 ImageButtons。单击这些 ImageButton 后,它们应该会出现在另一张放大的图像中。

图像(作为按钮)在网站上显示正确且可点击,但没有任何反应。 调试表明从未调用 imgBtnClick 方法

问题是未触发 ImageClickEventHandler 中指定的方法任何关于为什么会发生这种情况的建议都非常感谢。

请在下面找到我的代码示例。

点击主按钮时执行的代码

protected void logo_Click(object sender,ImageClickEventArgs e)
{
     logo.CssClass = "Highlight";      
     Images();
     Panel_Photo.Visible = true;
}

Images 方法,其中为 Server.MapPath(...) 处的所有图像创建动态图像按钮

protected void Images()
{
    foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/images/Photos/Stuff")))
    {
        ImageButton imgBtn = new ImageButton();
        FileInfo fileInfo = new FileInfo(strFileName);
        imgBtn.ImageUrl = "~/images/Photos/Stuff/" + fileInfo.Name;
        imgBtn.Width = Unit.Pixel(100);
        imgBtn.Height = Unit.Pixel(100);
        imgBtn.Style.Add("padding","5px");
        imgBtn.Click += new ImageClickEventHandler(imgBtnClick);
        imgBtn.OnClientClick = "return false";
        Panel_Photo.Controls.Add(imgBtn);
    }
}

最终方法应该在另一个图像中显示来自单击图像按钮的图像

void imgBtnClick(object sender,ImageClickEventArgs e)
{
    LabelPhoto.Text = "test";
    ImageClicked.ImageUrl = ((ImageButton)sender).ImageUrl;
}

标签和'ImageClicked'是在aspx页面<asp:Image ID="ImageClicked" runat="server"></asp:Image>

中创建的

Panel_PhotoImageClicked 在不同的 div 中,在网页上彼此相邻。

解决方法

@ademg 和@Greg 的评论都帮助我找到了解决方案。

我基本上不得不将整个 foreach 代码块放在 Page_Load 方法中并删除行 imgBtn.OnClientClick = "return false";

每当点击 imgBtn(图像)时,网页都会跳转到顶部,但这是另一个需要研究的问题。