我创建了一个简单的mvc3 razor Web应用程序。 在它上面我有一个控制器和这样的动作:
public class DownloadController : Controller
{
public ActionResult Index()
{
return File(@"\Files\MyFile.zip", "compress/zip");
}
}
在我看来我写这些:
@Html.ActionLink("Downlod file","Index","Download")
和
<a href="Files/MyFile.zip">download it</a>
第一行效果良好并使用Index动作结果但第二行不使用索引动作结果。 我注册了一个写的 Global.asax文件将mape secound请求编入索引操作结果但不起作用
此代码:
routes.MapRoute("downloadroute",
"Files/",
new { controller = "Download", action = "Index", id =
UrlParameter.Optional }
);
但不能解决这个问题 怎么了?
我完整的全局文件内容
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute("downloadroute",
"Files/",
new { controller = "Download", action = "Index",
id =UrlParameter.Optional }
);
感谢所有
答案 0 :(得分:0)
您的路线与物理文件夹Files
冲突。您可以重命名文件夹以解决此冲突,或更改路由URL(并将该路由放在默认路由之前):
routes.MapRoute("downloadroute",
"Downloads/",
new { controller = "Download", action = "Index" }
);
使用绝对路径而不是相对路径:
<a href="@Url.Content("~/Downloads")">download it</a>