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