单击图像时创建查询字符串(asp.net/c#)

单击图像时创建查询字符串(asp.net/c#),c#,asp.net,repeater,C#,Asp.net,Repeater,我的应用程序是一个图像库,通过一个转发器控件,我列出了缩略图(除了全尺寸图像外,缩略图在一个单独的文件夹中)。单击缩略图时,应在图像控件“fullSizeImage”中显示全比例图像,并应创建一个查询字符串(获取页面)以全比例显示特定图像 查询字符串的代码已经完成,但问题是我不知道将其放在哪里(创建查询),因为超链接控件不支持事件单击。是否有一种方法可以使用例如Repeater ItemCommand,或者如何实现我在这里想要的 谢谢 从default.aspx: <asp:Image I

我的应用程序是一个图像库,通过一个转发器控件,我列出了缩略图(除了全尺寸图像外,缩略图在一个单独的文件夹中)。单击缩略图时,应在图像控件“fullSizeImage”中显示全比例图像,并应创建一个查询字符串(获取页面)以全比例显示特定图像

查询字符串的代码已经完成,但问题是我不知道将其放在哪里(创建查询),因为超链接控件不支持事件单击。是否有一种方法可以使用例如Repeater ItemCommand,或者如何实现我在这里想要的

谢谢

从default.aspx:

<asp:Image ID="fullSizeImage" runat="server" />

    <asp:Repeater ID="ImageRepeater" runat="server" DataSourceID="" >
        <ItemTemplate>
            <asp:HyperLink ID="ImageHyperLink" NavigateUrl='<%# Eval("Name", "~/Images/{0}") %>' runat="server" CssClass="thumbnails" >
                <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "~/Images/Thumbnails/{0}") %>' CssClass="thumbnail" />
            </asp:HyperLink>
        </ItemTemplate>
    </asp:Repeater>
创建查询字符串(我不知道放在哪里):


string str=ImageUrl 在代码隐藏中,您可以设置与中继器的ItemDataBound事件关联的方法。在该方法中,您可以检索当前文件,查找超链接,并将链接的NavigateUrl设置为正在生成的字符串。如下所示:

ImageRepeater.ItemDataBound += new RepeaterItemEventHandler(ImageRepeater_ItemDataBound);

private void ImageRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    [File] f = (File)e.Item.DataItem;
    HyperLink ImageHyperLink = (HyperLink)e.Item.FindControl("ImageHyperLink");
    string str = f.ImageUrl;
    ImageHyperLink.NavigateUrl = "default.aspx?name=" + Server.UrlEncode(str);
}
这对我有用

<asp:HyperLink ID="ImageHyperLink" NavigateUrl='<%# "~/default.aspx?name=" + Server.UrlEncode(Eval("Name","~/Images/{0}")) %>' runat="server" CssClass="thumbnails" >
    <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "~/Images/Thumbnails/{0}") %>' CssClass="thumbnail" />
</asp:HyperLink>


非常感谢您的回答。第一行,(ImageRepeater.ItemDataBound+=…等等)应该放在哪里?顺便说一句,“[File]f”会引发一条错误消息:“预期”,以及该行的其余部分:“无法转换为静态类型'System.IO.File'。您知道如何解决这个问题吗?天哪,这是一个非常好的解决方案,效果非常好。非常感谢!
ImageRepeater.ItemDataBound += new RepeaterItemEventHandler(ImageRepeater_ItemDataBound);

private void ImageRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    [File] f = (File)e.Item.DataItem;
    HyperLink ImageHyperLink = (HyperLink)e.Item.FindControl("ImageHyperLink");
    string str = f.ImageUrl;
    ImageHyperLink.NavigateUrl = "default.aspx?name=" + Server.UrlEncode(str);
}
<asp:HyperLink ID="ImageHyperLink" NavigateUrl='<%# "~/default.aspx?name=" + Server.UrlEncode(Eval("Name","~/Images/{0}")) %>' runat="server" CssClass="thumbnails" >
    <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Name", "~/Images/Thumbnails/{0}") %>' CssClass="thumbnail" />
</asp:HyperLink>