使用ASP.net显示存储在文件夹中的所有图像

时间:2011-09-19 00:52:34

标签: asp.net asp.net-mvc

我想显示图像文件夹中的所有图像。 这是我的代码:

 <% 
 string dir = Server.MapPath("Content/slideshow/images");
 string[] files;
 int numFiles;
 files = System.IO.Directory.GetFiles(dir);
 numFiles = files.Length;

 for (int i = 1; i < numFiles; i++)
 {
 %>
 <i><a href="#">
 <img src="/Content/slideshow/images/image<%= i %>.jpg" alt="" height="239px" width="930px" />
  </a></i>
 <% }%>

当我这样编码时,它只显示名为“image”+ blah blah blah的图像。但我想在文件夹中呈现不同名称的所有图像。 谁能解决这个问题?谢谢你提前。

2 个答案:

答案 0 :(得分:2)

我建议您使用视图模型来实现此目的。所以让我们从定义这样的开始:

public class ImageViewModel
{
    public string Url { get; set; }
}

然后我们可以有一个控制器动作来填充这个视图模型(或者恰好是它的集合):

public class ImagesController: Controller
{
    [ChildActionOnly]
    public ActionResult Images()
    {
        var appData = Server.MapPath("~/Content/slideshow/images");
        var images = Directory.GetFiles(appData).Select(x => new ImageViewModel
        {
            Url = Url.Content("~/Content/slideshow/images/" + Path.GetFileName(x))
        });
        return PartialView(images);
    }
}

然后我们可以定义相应的局部视图(~/Views/Shared/Images.ascx):

<%@ Control 
    Language="C#"    
    Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<ImageViewModel>>" 
%>
<%= Html.DisplayForModel() %>

接下来将为每个图像(~/Views/Shared/DisplayTemplates/ImageViewModel.ascx)呈现相应的显示模板:

<%@ Control 
    Language="C#"    
    Inherits="System.Web.Mvc.ViewUserControl<ImageViewModel>" 
%>
<img src="<%= Model.Url %>" alt="" height="239px" width="930px" />

并且剩下的最后一部分是在视图或母版页中的某处包含此子操作:

<%= Html.Action("Images", "Images") %>

答案 1 :(得分:0)

public DisplayImages() {

System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(Location);
foreach (System.IO.FileInfo f in dir.GetFiles("*.*")) 
{
    //Do Something
}

}