2

在我看来,我有以下代码:

@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];

但显然这并不是我真正想要的编码方式......

4

0 回答 0