如何在每个动态创建的ImageButton周围包装超链接?Visual Studio

How to wrap a hyperlink around each dynamically created ImageButton? Visual Studio

本文关键字:包装 周围 超链接 Studio Visual ImageButton 创建 动态      更新时间:2023-09-26

我正在尝试为一个网站创建一个图片库。我正在使用Visual Studio 2013高级版,并尝试使用Colorbox jQuery lightbox插件来显示图像。我已经让插件在一个简单的web表单中工作。现在我正试图让它与我的主代码一起工作。它似乎主要通过将一个类(在本例中称为"group1")应用于锚标记元素来工作。我创建了一个文件上传控件,并将其设置为将上传的图像文件显示为页面面板中的图像按钮。加载页面后,它会在面板中显示任何图像(当前位于"数据"文件夹中)。一切都很好。

我希望能够点击一个图像按钮,Colorbox插件会像以前一样显示它(举一个简单的例子,我将一个类应用到锚标记)。然而,它不起作用。我认为原因是我将类应用于ImageButton,而不是锚标记。我已经尝试了以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
namespace imageGalleryTest
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            uploadImage();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (FileUpload1.HasFile)
            {
                string filename = FileUpload1.FileName;
                FileUpload1.PostedFile.SaveAs(Server.MapPath("~/Data/" + filename));
            }
            Response.Redirect("~/WebForm1.aspx");
        }
        private void uploadImage()
        {
            foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/Data/")))
            {
                ImageButton imageButton = new ImageButton();
                FileInfo fileInfo = new FileInfo(strFileName);
                imageButton.ImageUrl = "~/Data/" + fileInfo.Name;
                imageButton.Width = Unit.Pixel(100);
                imageButton.Height = Unit.Pixel(100);
                imageButton.Style.Add("padding", "5px");
                imageButton.Click += new ImageClickEventHandler(imageButton_Click);
                //imageButton.CssClass = "group1";
                Panel1.Controls.Add(imageButton);
            }
        }
        private void imageButton_Click(object sender, ImageClickEventArgs e)
        {
            Response.Redirect(((ImageButton)sender).ImageUrl);
        }
    }
}

现在,当我点击一个图像按钮时,它会显示背景变暗的图像,但不会对其应用任何颜色框效果。

我试着取消这一行的注释,但没有帮助:

//imageButton.CssClass = "group1";

我尝试在页面上创建一个超链接,当单击图像按钮时,将图像按钮的图像url分配给超链接的导航url。然后,当我点击超链接时,它会很好地工作,并将颜色框效果应用于图像。

private void imageButton_Click(object sender, ImageClickEventArgs e)
       {
           HyperLink1.NavigateUrl = ((ImageButton)sender).ImageUrl;
       }

然后我尝试让它自动指向图像url,而不必点击带有以下内容的超链接:

private void imageButton_Click(object sender, ImageClickEventArgs e)
       {
           HyperLink1.NavigateUrl = ((ImageButton)sender).ImageUrl;
           Response.Redirect(HyperLink1.NavigateUrl);
       }

但它没有起作用,它只是在黑暗的背景下像以前一样显示图像。

我觉得如果我可以在创建的每个图像按钮周围包装一个锚标记,并将所需的类应用于该锚标记,那么它可能会工作,但我不知道如何工作。

非常感谢您的帮助。

我最终以不同的方式完成了这项工作,因为我对上面的代码没有任何运气。我放弃了image按钮,而是在代码后面创建了一个包装在img标记周围的超链接。因此,对于文件夹中的每个文件,它都会创建一个图像,该图像周围有一个锚标记,并应用了必要的类。

private void uploadImage()
        {
            string thumbnails = "<div id='"photoThumbnailContainer'">";
            foreach (string strFileName in Directory.GetFiles(Server.MapPath("~/Data/")))
            {            
                FileInfo fileInfo = new FileInfo(strFileName);
                thumbnails += "<a href='"Data/" + fileInfo.Name + "'" class='"group1'"><div class='"thumbnails'"><img src='"Data/" + fileInfo.Name + "'" height='"200px'" width='"200px'" /></div></a>";   
            }
            thumbnails += "</div>";
            lblImageThumbnails.Text = thumbnails;
        }