动态地从硬盘驱动器获取图像以在gridview中显示

时间:2014-06-05 10:39:27

标签: c# css asp.net gridview

我试图动态地从我的硬盘驱动器上抓取图像,但我不能,因为即使动态路径被正确创建,它也不会显示。

之所以这样,是因为我正在为网站创建一个后端系统。它将托管在同一个硬盘驱动器上,但后端需要访问用户添加的图像。

这样我们就可以在用户上传之前屏蔽用户上传的内容" live"在网站上。

我在主站点上使用了这个代码并将其调整为在后端工作,但它不起作用。

当我显示页面时图像没有显示但是如果我右键单击图像应该是的区域那么它将允许我复制链接,当我把它放在地址栏中时图像显示..我&#39 ;难倒:(

可以看看我的代码,看看哪里出错了

以下代码:

<div class="panel panel-default" style="background-color: #f3f3f3;">
    <div class="panel-body">
        <asp:DataList ID="_propertyImagesList" runat="server" RepeatColumns="4" RepeatDirection="Horizontal" CellPadding="16">
            <ItemTemplate>
                <div class="popup-gallery">
                  <a id="imageLink" href='<%# Eval("ImagePath","file:///C:/Development/main website/main website/PropertyImages/{0}") %>' runat="server" class="thumbnail" style="margin: 10px; min-height: 140px; min-width: 140px;">
                      <asp:Image ID="_propertyImage" ImageUrl='<%# Bind("ThumbPath", "file:///C:/Development/main website/main website/PropertyImages/{0}") %>' runat="server" CssClass="img-responsive" />
                  </a>
                </div>
            </ItemTemplate>
        </asp:DataList>
    </div>
</div>

C#

    protected void GetPropertyImages(int propertyId)
    {
        SqlCommand cmd = new SqlCommand("GetPropertyImages", conn);
        cmd.CommandType = System.Data.CommandType.StoredProcedure;

        SqlDataReader rdr;

        cmd.Parameters.Add("@PropertyId", System.Data.SqlDbType.Int).Value = propertyId;

        conn.Open();
        rdr = cmd.ExecuteReader();

        _propertyImagesList.DataSource = rdr;
        _propertyImagesList.DataBind();

        rdr.Close();
        conn.Close();
    }

1 个答案:

答案 0 :(得分:0)

这是我在许多项目上所做的和已经完成的,未经测试,所以可能需要一两件事来调整以适应您的设置。我猜C:\ Development \ main website \ main website是你网站的根目录。

注意:我还更改了DataList的ID,这与Resharper的命名约定一致。

<asp:DataList ID="PropertyImageList" runat="server" OnItemDataBound="PropertyImageList_ItemDataBound" RepeatColumns="4" RepeatDirection="Horizontal" CellPadding="16">
    <ItemTemplate>
        <div class="popup-gallery">
            <asp:HyperLink runat="server" ID="PropertyImageLink" CssClass="thumbnail" Style="margin: 10px; min-height: 140px; min-width: 140px;">
                <asp:Image runat="server" ID="PropertyImage" CssClass="img-responsive" />
            </asp:HyperLink>
        </div>
    </ItemTemplate>
</asp:DataList>

C#

protected void PropertyImageList_ItemDataBound(object sender, DataListItemEventArgs e)
{
    var data = e.Item.DataItem as DbDataRecord;
    if (data == null)
        return;

    var link = e.Item.FindControl("PropertyImageLink") as HyperLink;
    var image = e.Item.FindControl("PropertyImage") as Image;

    if (link == null || image == null)
        return;

    image.ImageUrl = "~/PropertyImages/" + data["ImagePath"];
    link.NavigateUrl = "~/PropertyImages/" + data["ThumbPath"];
}