无法通过循环文件夹显示图像

时间:2013-02-05 16:19:54

标签: asp.net-mvc asp.net-mvc-3

我的ASP.NET项目包含img文件夹下的图像。我正在尝试自动化显示图像的过程,而无需手动添加每个图像。

我试过了:

@foreach (var image in Directory.GetFiles(Server.MapPath("/img/portfolio/engagement")))
{
    <li class="span3"><a href="#" class="thumbnail"><img src="@image"/></a></li>
}

输出:

    <ul class="thumbnails">
            <li class="span3"><a href="#" class="thumbnail"><img src="C:\Users\Cody\Documents\CMBS\CodySolution\CodySolution\img\portfolio\engagement\IMG_0093.jpg"/></a></li>
            <li class="span3"><a href="#" class="thumbnail"><img src="C:\Users\Cody\Documents\CMBS\CodySolution\CodySolution\img\portfolio\engagement\IMG_0130.jpg"/></a></li>
            <li class="span3"><a href="#" class="thumbnail"><img src="C:\Users\Cody\Documents\CMBS\CodySolution\CodySolution\img\portfolio\engagement\IMG_0144.jpg"/></a></li>
            <li class="span3"><a href="#" class="thumbnail"><img src="C:\Users\Cody\Documents\CMBS\CodySolution\CodySolution\img\portfolio\engagement\IMG_9931.jpg"/></a></li>
    </ul>

这不起作用。图片没有显示,当我尝试按照直接链接时,它会告诉我A potentially dangerous Request.Path value was detected from the client (:).

做我正在做的事情的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

这是因为Server.MapPath为您提供了Web应用程序驻留在服务器上的物理目录。

请尝试使用Url.Content()。这将为您提供类似http://www.yoursite.com/Content/file.jpg

的http路径

例如:

var path = "~/Content/Whatever/";
var listOfFileNames = Directory.GetFiles(Server.MapPath(path))
    .Select(p => path + Path.GetFileName(p));

@foreach (var item in listOfFileNames)
{
    <img src="@Url.Content(item)" />
}