在我看来,我有以下代码:
@foreach (Document document in Model.Documents)
{
<img src="@Url.Action("GetDocument", new { docId = Model.DocId, filename =
document.DocumentName })" />
}
单步执行代码,文件名按预期解析为“小丑.jpg”。
但是,当将此参数传递给控制器时,如下所示:
[AcceptVerbs(HttpVerbs.Get)]
[OutputCache(Duration = 36000)]
public virtual ImageResult GetDocument(int docId, string filename)
{
var attachment = _docService.GetDocument(docId, filename);
...........
}
文件名参数附加了额外的整数,因此它的值类似于“clown.jpg?316767349393”。
为什么会这样,以及如何让它不那样做?它阻止我按文件名查找文件。我可以通过忽略 ? 继续,但我想知道为什么会发生这种情况以及阻止它发生的正确方法。
编辑:我通过在控制器中添加这行代码来解决这个问题:
filename = filename.Split('?')[0];
但显然这并不是我真正想要的编码方式......