1

我创建了一个简单的 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>

第一行效果很好并使用索引操作结果,但第二行不使用索引操作结果。我在 Global.asax 文件中注册了一个写入以映射第二个请求以索引操作结果,但它不起作用

这段代码:

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 }
                    );

谢谢大家

4

1 回答 1

0

您的路线与物理文件夹冲突Files。您可以重命名文件夹以解决此冲突,或更改路由 url(并将该路由放在默认路由之前):

routes.MapRoute("downloadroute",
                "Downloads/",
                 new { controller = "Download", action = "Index" }
                );

并使用绝对路径而不是相对路径:

<a href="@Url.Content("~/Downloads")">download it</a>
于 2012-12-15T14:45:51.030 回答