2013-04-13 2 views
8

möchte ich alle meine Bilder in meinem Ordner "Images_uploads" in MVC View anzeigen. Also seine Anzeige auf der Website. Aber nichts scheint zu funktionieren.Zeigt alle Bilder in einem Ordner in MVC an. Mit einer 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

was ist die Frage? –

+0

Wenn ich alle meine Bilder in einem Ordner anzeigen und dann in der Ansicht anzeigen kann. –

Antwort

20

Sie sollten diese Art von Sache wahrscheinlich in Ihrem Controller tun. Verwenden Sie EnumerateFiles eine Auflistung aller Dateien in einem Ordner zu erhalten:

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

Noch besser ist, verwenden Sie eine stark typisierte Ansicht Modell, wie folgt aus:

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

können Sie auch 'Images = Directory.EnumerateFiles (Server.MapPath (" ~/images_upload ")). Wählen Sie (f =>" ~/images_upload/"+ f);' und entfernen Sie den "~/images_upload" Teil aus die Aussicht, den Weg an nur einem Ort zu halten. – corrego

+0

Vielen Dank ps.w.q, Jetzt für meine zweite Frage, ich bekomme einen Fehler, wenn ich versuche, ein Bild hochzuladen. –

+0

p.s.w. Ich bekomme eine Objektreferenz nicht auf eine Instanz eines Objekts festgelegt. Auf der @foreach ... –

Verwandte Themen