c# - 在 MVC 中显示文件夹中的所有图像。用一个foreach

标签 c# asp.net-mvc asp.net-mvc-4

我想将文件夹“Images_uploads”文件夹中的所有图片显示到 MVC View 中。所以它显示在网站上。但似乎没有任何效果..

{

<form method="post" action="/Images_upload" enctype="multipart/form-data">  
    <input name="ImageUploaded" type="file">  
    <input type="submit">  
</form>  

<List<String> li = ViewData["~/images_upload"] as List<String>;
 foreach (var picture in li)

    <img src = '@Url.Content("~/images_upload" + picture)' alt="Hejsan" />

}

最佳答案

您可能应该在您的 Controller 中执行此类操作。使用 EnumerateFiles获取文件夹中所有文件的列表:

// controller
public ActionResult MyAction()
{
    ...
    ViewBag.Images = Directory.EnumerateFiles(Server.MapPath("~/images_upload"))
                              .Select(fn => "~/images_upload/" + Path.GetFileName(fn));

    return View(...);
}

// view
@foreach(var image in (IEnumerable<string>)ViewBag.Images))
{
    <img src="@Url.Content(image)" alt="Hejsan" />
}

更好的是,使用强类型 View 模型,如下所示:

// model
class MyViewModel
{
    public IEnumerable<string> Images { get; set; }
}

// controller
public ActionResult MyAction()
{
    var model = new MyViewModel()
    {
        Images = Directory.EnumerateFiles(Server.MapPath("~/images_upload"))
                          .Select(fn => "~/images_upload/" + Path.GetFileName(fn))
    };
    return View(model);
}
// view
@foreach(var image in Model.Images)
{
    <img src="@Url.Content(image)" alt="Hejsan" />
}

关于c# - 在 MVC 中显示文件夹中的所有图像。用一个foreach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15989764/

相关文章:

jquery - MVC4 不显眼的验证不等待远程验证完成

c# - TDD 红绿灯的重构阶段 - 如何做到这一点?

css - 如何在浏览器屏幕缩小时显示水平滚动条

asp.net-mvc-4 - mvc4 中的 razor 代码中 @ 之后出现意外的 "{"

ajax - ViewModel 是否支持嵌套模型?虚拟属性可以应用于 viewModel 吗?

c# - DIV 内容未解析为 HTML

c# - ASP.NET MVC 4 - 以 HTML、JSON 或 XML 响应的正确方式

c# - 在没有标准 (Obj sender, EventArgs args) 签名的情况下创建事件处理程序委托(delegate)有多错误?

c# - 有什么充分的理由不依赖业务逻辑中的数据库 key 完整性吗?

c# - C++/CLI 中的 ComVisible