使用Asp.Net C#选择所有图像

我是ASP.NET和C#的新手。 我试图从文件夹中检索所有图像并在页面上显示它,但它只选择一个图像。

我的ASP.NET代码:

我的C#代码:

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using System.Configuration; namespace Blog { public partial class index : System.Web.UI.Page { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["blogconnection"].ToString()); protected void Page_Load(object sender, EventArgs e) { con.Open(); string allimage; string qry="select * from images"; SqlCommand cmd = new SqlCommand(qry, con); SqlDataReader dr =cmd.ExecuteReader(); if (dr.HasRows) { while(dr.Read()) { if (!string.IsNullOrEmpty(Convert.ToString(dr["Image_Path"]))) { Image.ImageUrl = Convert.ToString(dr["Image_Path"]); } } } con.Close(); } } } 

我想要的是:我想选择所有在sql表中存储路径的图像。

附加:有没有办法从文件夹中选择路径存储在sql中的video,意思是选择不同文件夹中的video和图像,并按指定日期或最新上传等显示在同一页面上。

任何帮助将不胜感激。

编辑#1

在PHP中我使用下面的代码来获取所有图像并显示它,是否有任何东西相当于ASP.NET中的下面的代码?

PHP代码

 prepare('SELECT * FROM post'); $smt->execute(); ?>  

fetch(PDO::FETCH_OBJ)): ?> <img src="https://stackoverflow.com/questions/33597934/select-all-images-using-asp-net-c-sharp/posts/Post_Path; ?>" alt="image" class="post-image"/>
  • Post on Post_Date; ?>
<a href="https://stackoverflow.com/questions/33597934/select-all-images-using-asp-net-c-sharp/post-description.php?id=Id ?>">

Title; ?>

Post; ?>


在后面的代码中编写你的Collection()方法来检索图像作为这样的Strings List也最好使用Using语句 ):

 protected IEnumerable Collection() { string address = ConfigurationManager.ConnectionStrings["blogconnection"].ToString(); using (SqlConnection con = new SqlConnection(address)) { con.Open(); string qry = "select * from images"; SqlCommand cmd = new SqlCommand(qry, con); using (SqlDataReader dr = cmd.ExecuteReader()) { if (!dr.HasRows) return allimage; while (dr.Read()) { if (!string.IsNullOrEmpty(Convert.ToString(dr["Image_Path"]))) { yield return (dr["Image_Path"].ToString()); } } } } } 

然后你可以像这样使用asp:Repeater

   

或者你可以这样做:

 
    <% var drc = Collection(); foreach (var item in drc) { %>
  • <% } %>

您可以动态地将新的asp:image对象添加到form1。

 Image img = new Image(); img.ImageUrl = dr["Image_Path"].ToString(); img.AlternateText = "Test image"; form1.Controls.Add(img); 

问题出在这个声明中:

 Image.ImageUrl = Convert.ToString(dr["Image_Path"]); 

这句话有什么作用? 它将每个 image path值分配给一个 Image.ImageUrl 。 因此, Image.ImageUrl将保存最后指定的image path 。 结果只显示一张图片。 这不是你想要的。

你想要的是:显示所有图片 – >为每个 Image.ImageUrl分配每个 image path – > 动态创建Image并将其添加到表单 。 因此,您应该执行以下操作,而不是编写该语句:

 Image img = new Image(); img.ImageUrl = dr["Image_Path"].ToString(); img.AlternateText = "Test image"; form1.Controls.Add(img); 

代码未经过测试 。 只关注这个想法。 您可以这样做,或使用repeater ,或您自己的方式,这取决于您。

如果你发现一些不清楚的东西,请随时问我:)

您可以使用控件根据需要使用自定义样式显示图像

1)很明显,你不能将多个图像显示在一个HTML对象中。 您必须根据要在页面上显示它的方式使用RepeaterGridViewDataGrid或动态HTML生成(即HTML设计)

2)正确地遵循ASP.NET页面生命周期事件(在您完成初始化RepeaterGridviewDatagrid ,您可以在PageLoad()事件中编写代码)

3)你也可以显示video,但为此你需要一些播放器,它不会那么简单(你可以使用第三方工具)

我修改了你的代码以使它工作。 而是在aspx中定义图像,从后面的代码中动态添加它。

您修改的ASP.NET代码:

 

您修改的C#代码:

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data.SqlClient; using System.Data; using System.Configuration; namespace Blog { public partial class index : System.Web.UI.Page { SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["blogconnection"].ToString()); protected void Page_Load(object sender, EventArgs e) { con.Open(); string allimage; string qry="select * from images"; SqlCommand cmd = new SqlCommand(qry, con); SqlDataReader dr =cmd.ExecuteReader(); if (dr.HasRows) { while(dr.Read()) { if (!string.IsNullOrEmpty(Convert.ToString(dr["Image_Path"]))) { Image img = new Image(); img.ImageUrl = dr["Image_Path"].ToString(); img.AlternateText = dr["Image_Path"].ToString(); form1.Controls.Add(img); } } } con.Close(); } } } 

我在这里添加了一些屏幕截图,希望你能从这里继续。

在此处输入图像描述

在此处输入图像描述