如何使用Razor MVC显示文件夹中的图像?

时间:2014-02-09 12:40:48

标签: asp.net-mvc-4 razor

我正在使用Razor MVC,我想显示“〜/ Content / uploads”文件夹中的图像。 我提出了以下解决方案:

@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()前缀。

如何简化此代码?

2 个答案:

答案 0 :(得分:19)

您可以使用Razor页面上提供的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))" />
}

答案 1 :(得分:2)

@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