私の見解では、私は次のコードを持っています:
@foreach (Document document in Model.Documents)
{
<img src="@Url.Action("GetDocument", new { docId = Model.DocId, filename =
document.DocumentName })" />
}
コードをステップスルーすると、ファイル名は期待どおりに「clown.jpg」に解決されます。
ただし、このパラメーターが次のようにコントローラーに渡される場合:
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 36000)]
public virtual ImageResult GetDocument(int docId, string filename)
{
var attachment = _docService.GetDocument(docId, filename);
...........
}
filenameパラメータには追加の整数が追加されているため、その値は「clown.jpg?316767349393」のようになります。
それはなぜですか、そしてどうすればそれを行わないようにすることができますか?ファイル名でファイルを検索できなくなります。?からすべてを無視することで、これを回避する方法をハックすることができます。先に進みますが、なぜこれが起こっているのか、そしてそれを防ぐための正しい方法を知りたいです。
編集:コントローラーに次のコード行を追加することで、これを回避しました:
filename = filename.Split('?')[0];
しかし、明らかにそれは私がこれをコーディングしたい方法ではありません...