Добавить MapRoute для статического ресурса ASP.NET MVC

У меня есть файл pdf, в котором я хотел бы создать для него карту маршрута. Есть ли способ заставить объект по умолчанию использовать URL-адрес вместо комбинации контроллера действий?

Вместо

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

Есть что-то вроде

 routes.MapRoute("MyRouteName", "MyNiceUrl", new { relativeUrl="MyrelativeUrl" });

person Emmanuel N    schedule 06.10.2011    source источник


Ответы (2)


Маршруты для статических ресурсов не нужны. Чтобы ссылаться на них, вам нужны помощники по URL:

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

И если вы хотите иметь URL-адрес типа /SomeController/MyNiceUrl для обслуживания вашего файла pdf, вы можете просто написать действие контроллера:

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

а потом:

<%= Html.ActionLink("Download pdf", "MyNiceUrl", "SomeController") %>
person Darin Dimitrov    schedule 06.10.2011

Как и в этом ответе:

Используйте свой контроллер или создайте мини-контроллер, а затем используйте Redirect ActionResult:

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

}
person Chris Jaynes    schedule 13.03.2012