我的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 (:).
做我正在做的事情的正确方法是什么?
答案 0 :(得分:2)
这是因为Server.MapPath
为您提供了Web应用程序驻留在服务器上的物理目录。
请尝试使用Url.Content()
。这将为您提供类似http://www.yoursite.com/Content/file.jpg
例如:
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)" />
}