Asp.net 从目录绑定列表视图中的数据

Asp.net 从目录绑定列表视图中的数据,asp.net,vb.net,listview,bind,vb.net-2010,Asp.net,Vb.net,Listview,Bind,Vb.net 2010,我有一个列表视图: <asp:ListView ID="ListView1" runat="server"> <ItemTemplate> <asp:ImageButton ID="ImageButton1" runat="server" /> </ItemTemplate> </asp:ListView> 我从目录中获取链接和文件名,而不是从数据库中

我有一个列表视图:

 <asp:ListView ID="ListView1" runat="server">
           <ItemTemplate>
                 <asp:ImageButton ID="ImageButton1" runat="server" />
           </ItemTemplate>
 </asp:ListView> 

我从目录中获取链接和文件名,而不是从数据库中获取……那么如何在列表视图中绑定这些链接以显示所有图像呢?

将图像路径绑定到
列表视图的一种方法是在
Eval()
绑定中使用一个包含
公共属性的对象,如下所示:

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        <asp:Image id="Image1" runat="server" ImageUrl='<%# Eval("path") %>' />
    </ItemTemplate>
</asp:ListView> 
代码隐藏:

Public Class ImageBinder
    Public Property path() As String
        Get
            Return m_path
        End Get
        Set
            m_path = Value
        End Set
End Property
Private m_path As String
End Class
您现在需要创建
ImageBinder
对象列表的代码,而不仅仅是字符串列表

现在,在标记中,您可以在
列表视图
标记中引用
路径
属性,如下所示:

<asp:ListView ID="ListView1" runat="server">
    <ItemTemplate>
        <asp:Image id="Image1" runat="server" ImageUrl='<%# Eval("path") %>' />
    </ItemTemplate>
</asp:ListView> 


注意:这将考虑绑定,但您必须处理的一个问题是,如果您在问题中提供的示例路径(
D:\rbi\images\emotics\
)是正确的,那么它将无法在ASP.NET的范围内工作,由于安全限制,不允许在应用程序的虚拟目录之外使用路径。您需要创建一个虚拟目录,并将其用作希望在
列表视图中显示的图像的路径。请尝试以下完整解决方案:

在aspx页面中:

   <asp:ListView ID="ListView1" runat="server">
       <ItemTemplate>
             <asp:ImageButton ID="ImageButton1" runat="server" ToolTip='<%#Eval("Name")%>'/>
       </ItemTemplate>
   </asp:ListView>

@BhaveshKachhadiya在应用程序中代码在哪里你在绑定
列表视图
?@KarlAnderson我没有绑定列表视图:)我的问题是如何将它绑定到字符串列表中的图像路径…@JocelyneElKhoury-你是显示图像列表还是仅显示一个图像列表?@KarlAnderson这是图像列表。。。
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim di As New IO.DirectoryInfo(Server.MapPath("Images/emoticons/"))
        Dim diar1 As IO.FileInfo() = di.GetFiles()
        Dim dra As IO.FileInfo

        Dim FileList As New List(Of IO.FileInfo)
        'list the names of all files in the specified directory
        For Each dra In diar1
            FileList.Add(dra)
        Next

        ListView1.DataSource = FileList
        ListView1.DataBind()
    End Sub

    Protected Sub ListView1_ItemDataBound(sender As Object, e As  System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
        Dim ImageButton1 As ImageButton
        If e.Item.ItemType = ListViewItemType.DataItem Then
            Dim rowView As IO.FileInfo = e.Item.DataItem()
            Dim FileName As String = rowView.Name.ToString()
            ImageButton1 = e.Item.FindControl("ImageButton1")
            ImageButton1.ImageUrl = "~/Images/emoticons/" & FileName
        End If
    End Sub