我有以下代码在datalist中显示图像。
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。任何人都可以帮我这么做吗?
答案 0 :(得分: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") %>'