为静态资源ASP.NET MVC添加MapRoute

时间:2011-10-06 16:47:06

标签: asp.net-mvc-2 url-routing

我有一个pdf文件,我想为它创建一个路线图。有没有办法让对象默认采用url而不是动作控制器组合?

而不是

 routes.MapRoute("MyRouteName", "MyNiceUrl", new { controller = "ControllerName", action = "ActionName" });

有像

这样的东西
 routes.MapRoute("MyRouteName", "MyNiceUrl", new { relativeUrl="MyrelativeUrl" });

2 个答案:

答案 0 :(得分:2)

您不需要静态资源的路由。您需要url帮助器来引用它们:

<a href="<%= Url.Content("~/Content/test.pdf") %>">Download pdf</a>

如果您想要一个像/SomeController/MyNiceUrl这样的网址来提供您的pdf文件,您只需编写一个控制器操作:

public ActionResult MyNiceUrl()
{
    var pdf = Server.MapPath("~/Content/test.pdf");
    return File(pdf, "application/pdf");
}

然后:

<%= Html.ActionLink("Download pdf", "MyNiceUrl", "SomeController") %>

答案 1 :(得分:0)

this answer中一样:

使用您的控制器,或创建一个迷你控制器,然后使用Redirect ActionResult:

public class MyController : Controller
{
    public ActionResult Pdf()
    {
        return Redirect( Url.Content( "mydoc.pdf" ) );
    }

}