【问题标题】:Foreach loop on images in asp.net在 asp.net 中的图像上的 Foreach 循环
【发布时间】:2016-04-07 08:21:48
【问题描述】:

我是 Asp.Net 和 C# 的新手。我正在开发一个博客。我能够将图像保存在文件夹中,并将图像路径保存在 SQL Server 中。现在我想从路径存储在 SQL Server 表中的文件夹中检索图像。

我试试这个:

ASPX 标记

<body>
    <form id="form1" runat="server">
    <div class="row">
        <div class="page-header"></div>
    <div class="col-lg-3">

        <asp:Image ID="Image1" CssClass="img-thumbnail" runat="server" />
    </div>
    </div>
    </form>

</body>

代码隐藏

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Configuration;

namespace Admin_Panel
{
    public partial class Admin : System.Web.UI.Page
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["stuconnection"].ConnectionString);
        protected void Page_Load(object sender, EventArgs e)
        {
            string qry = "SELECT * FROM upload";

            SqlCommand cmd = new SqlCommand(qry, con);
            SqlDataReader dr;

            con.Open();
            dr = cmd.ExecuteReader();

            while (dr.Read())
            {
                var filep = dr.GetString(1);
                Image1.ImageUrl ="~/Images/" + filep;
            }
            con.Close();
        }
    }
}

但是上面的代码只会显示一张图片。

我想要什么:我想使用 foreach 循环或类似循环的方式显示所有图像,但我不知道该怎么做。

任何帮助将不胜感激。

【问题讨论】:

  • 你可以试试这样的:stackoverflow.com/a/2629921/5268548
  • 为此,您需要一个中继器,以便您可以重复您的图像 n 次,而循环不好,因为每次循环时您都有一个图像控件,您为相同的控件绑定不同的图像,并且最后一项将在循环结束时绑定图像控件。

标签: c# asp.net sql-server loops


【解决方案1】:

首先,你应该使用asp.repeater:

<asp:Repeater ID="RptImages" runat="server">
    <ItemTemplate>
        <asp:Image ID="Img" runat="server" ImageUrl='<%# Container.DataItem %>'/>
    </ItemTemplate>
</asp:Repeater>

其他:

public partial class Admin : System.Web.UI.Page
{
    List<String> images = new List();      
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["stuconnection"].ConnectionString);

    protected void Page_Load(object sender, EventArgs e)
    {
        string qry = "SELECT * FROM upload";
        SqlCommand cmd = new SqlCommand(qry, con);
        SqlDataReader dr;
        con.Open();
        dr = cmd.ExecuteReader();

        while (dr.Read())
        {
           var filep = dr.GetString(1);
           images.add(String.Concat("~/Images/", filep);
        }
        con.Close();
        RptImages.DataSource = images;
        RptImages.DataBind();
    }
}

【讨论】:

  • 感谢@arturas,您的代码添加将解决问题。你能解释一下是怎么回事,这样我就可以正确理解了。
  • 很简单。在 asp.net 中,您可以在这些情况下使用 asp.repeater,它必须与某些数据源绑定。我们创建了图像 url 列表,然后对其进行了绑定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多