2014-02-09 98 views
6

我使用剃刀MVC,我想從「〜/內容/上傳」文件夾顯示圖片。 我想出了以下解決方案:如何使用Razor MVC從文件夾中顯示圖像?

@foreach (FileInfo fileInfo in (new DirectoryInfo(Server.MapPath("~/Content/uploads")) 
            .GetFiles().Where(x => x.Extension == ".jpg"))) { 
    <img src="/@fileInfo 
       .FullName 
       .Substring(Server.MapPath("~/").Length) 
       .Replace("\\", "/")" 
     width="100"> 
} 

與代碼的問題是,我走的是完整的文件路徑 ,我取出使用Server.Mappath()的前綴。

我如何可以簡化這個代碼?

+0

如果可能的話,要麼接受你找到合適的答案,或者張貼的解決方案,如果你已經在其他來到比這裏張貼的答案。 – Vikram

+0

我同意你@Vikram –

回答

18

可以使用UrlHelper類,可以用剃刀頁。

@foreach (var imgPath in Directory.GetFiles(Server.MapPath("~/Content/uploads"), "*.jpg")) 
{ 
    var img = new FileInfo(imgPath); 
    <img src="@Url.Content(String.Format("~/Content/uploads/{0}", img.Name))" /> 
} 
+0

好的。爲我工作! – Vikram

+0

@羅文弗里曼感謝您的回答,這是工作。 –

+0

非常感謝..爲我工作。 – knigalye

1

@Rowan Freeman答案幫了我jpg圖像文件。但是,這是多個文件:

查看圖像以多個濾波器

@{ 

string supportedExtensions = "*.jpg,*.gif,*.png,*.bmp,*.jpe,*.jpeg,*.ico"; 

foreach (string imgPath in Directory.GetFiles(Server.MapPath("~/images/store/"), "*.*", 
SearchOption.AllDirectories).Where(s => supportedExtensions.Contains(Path.GetExtension(s) 
.ToLower()))) 
{ 
    var img = new FileInfo(imgPath); 
    <img style="width: 200px; height: 200px;" src="@Url.Content(String.Format("~/images/ 
    store/{0}", img.Name))" /> 
} 

} 

希望可以幫助一些之一。

Reference

相關問題