为什么地图请求在mvc3 razor中路由不起作用?

时间:2012-12-15 14:18:00

标签: asp.net-mvc-3

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

感谢所有

1 个答案:

答案 0 :(得分:0)

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

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

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

<a href="@Url.Content("~/Downloads")">download it</a>