2013-04-13 98 views
8

我想將我的文件夾「Images_uploads」文件夾中的所有圖片顯示到MVC視圖中。所以它在網站上顯示。但似乎沒有工作..顯示MVC文件夾中的所有圖像。使用foreach

{ 

<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" /> 

} 
+0

有什麼問題嗎? –

+0

如果我可以在一個文件夾中顯示我的所有照片,然後在視圖中顯示它們。 –

回答

20

你應該可能在你的控制器做這種事情。使用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" /> 
} 

更妙的是,使用強類型的視圖模型,就像這樣:

// 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" /> 
} 
+2

你也可以做'Images = Directory.EnumerateFiles(Server.MapPath(「〜/ images_upload」))。選擇(f =>「〜/ images_upload /」+ f);'並從「〜/ images_upload」只保留一個地方的觀點。 – corrego

+0

非常感謝p.s.w.q,現在我的第二個問題是,當我嘗試上傳圖片時,出現錯誤。 –

+0

p.s.w.g我得到的對象引用未設置爲對象的實例。在@foreach ... –

相關問題