0

我有以下代码在数据列表中显示图像。

     if (!IsPostBack)
     {
      string str="~/"+txt1.Text+"/";
        DirectoryInfo dir = new DirectoryInfo(MapPath("str"));
        FileInfo[] files = dir.GetFiles();
        ArrayList list = new ArrayList();
        foreach (FileInfo oItem in files)
        {
            if (oItem.Extension == ".jpg" || oItem.Extension == ".jpeg" || oItem.Extension == ".gif")
                list.Add(oItem);
            //Image ImageData= (Image)DataList1.FindControl("Image1");
            //ImageData.ImageUrl = dir.ToString()+"{0}";
        }
        DataList1.DataSource = list;
        DataList1.DataBind();

    }

在 aspx 中:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="10" CellPadding="5">
<ItemTemplate>
<asp:Image Width="20" Height="20" ID="Image1" ImageUrl='<%# Bind("Name", "~/ajax _main/testpages/images/{0}") %>' runat="server" />
<br />
<asp:HyperLink ID="HyperLink1" Text='<%# Bind("Name") %>' NavigateUrl='<%# Bind("Name", "~/ajax _main/testpages/images/{0}") %>' runat="server"/>
</ItemTemplate>
<ItemStyle BorderColor="silver" BorderStyle="dotted" BorderWidth="3px" HorizontalAlign="Center"
VerticalAlign="Bottom" />
</asp:DataList>

我想在cs文件中定义这个模板,这样我就可以根据txt1.Text更改导航url。任何人都可以帮我这样做吗?

4

1 回答 1

1

尝试

DirectoryInfo dir = new DirectoryInfo(MapPath(str));

请注意,我已从""str中删除

当你绑定时,你可以绑定如下路径

var paths = dir.GetFiles()
    .Where(f => f.Extension == ".jpg" || f.Extension == ".jpeg" || f.Extension == ".gif")
    .Select(p => new { Name = MapPathReverse(p.FullName) })
    .ToList();
DataList1.DataSource = paths;
DataList1.DataBind();

要从我使用以下方法的物理路径获取相对路径

public static string MapPathReverse(string fullServerPath)
{
    return @"~\" + fullServerPath.Replace(HttpContext.Current.Request.PhysicalApplicationPath, String.Empty);
}

现在您可以将 aspx 绑定更改为

ImageUrl='<%# Bind("Name") %>'
于 2013-05-27T10:03:11.550 回答