问题描述
我在网页上创建了一个按钮,单击该按钮时将从 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_Photo
和 ImageClicked
在不同的 div 中,在网页上彼此相邻。
解决方法
@ademg 和@Greg 的评论都帮助我找到了解决方案。
我基本上不得不将整个 foreach
代码块放在 Page_Load 方法中并删除行 imgBtn.OnClientClick = "return false";
每当点击 imgBtn
(图像)时,网页都会跳转到顶部,但这是另一个需要研究的问题。