1

imgフォルダーの下に、ASP.NET プロジェクトに含まれる画像があります。画像を手動で追加することなく、画像を表示するプロセスを自動化しようとしています。

私は試した:

@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 (:).

私がやろうとしていることを行う適切な方法は何ですか?

4

1 に答える 1

2

これServer.MapPathは、Webアプリがサーバー上に存在する場所の物理ディレクトリを提供するために発生します。

Url.Content()代わりに使用してみてください。これにより、次のようなhttpパスが得られます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)" />
}
于 2013-02-05T16:26:35.127 に答える