Asp.net mvc 3 Action将额外的信息附加到参数

Asp.net mvc 3 Action将额外的信息附加到参数,asp.net-mvc-3,Asp.net Mvc 3,在我看来,我有以下代码: @foreach (Document document in Model.Documents) { <img src="@Url.Action("GetDocument", new { docId = Model.DocId, filename = document.DocumentName })" /> } filename参数附加了额外的整数,因此其值类似于“小丑.jpg?316767349393” 为什么会这样,我如何使它不这样做?它阻止

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

@foreach (Document document in Model.Documents)
{
  <img src="@Url.Action("GetDocument", new { docId = Model.DocId, filename =  
  document.DocumentName })" />
}
filename参数附加了额外的整数,因此其值类似于“小丑.jpg?316767349393”

为什么会这样,我如何使它不这样做?它阻止我按文件名查找文件。我可以通过忽略一切来解决这个问题?但我想知道为什么会发生这种情况,以及阻止这种情况发生的正确方法

编辑:我通过在控制器中添加以下代码行来解决此问题:

filename = filename.Split('?')[0];

但很明显,我并不想这样编码…

我猜这与缓存有关。如果我了解您的路线,它应该会生成一个类似“getdocument/?docId=1234567&filename=test”的url,对吗?发生的事对吗?是的,没错,尼克。但实际上我得到的是类似于“getdocument/?docId=1234567&filename=test?13368484832”的东西。为什么不指定“VaryByParam”选项?无论参数如何,您都会告诉操作缓存。您需要VaryByParam=“docId;filename”。在ImageResult GetDocument中,生成的原始HTML是否有“???????????????????????????。(我猜这与缓存有关。如果我了解您的路线,它应该生成一个类似“GetDocument/?docId=1234567&filename=test”的url,对吗?这样做对吗?是的,没错,尼克。但我实际得到的是类似“getdocument/?docId=1234567&filename=test?13368484832”的内容。为什么不指定“VaryByParam”选项?告诉操作缓存,而不考虑参数。需要VaryByParam=“docId;filename”。在ImageResult GetDocument中,生成的原始HTML是否具有“????????????????????????或者是否有可能您正在使用一个jQuery插件来添加时间戳以防止缓存(
filename = filename.Split('?')[0];