【发布时间】:2014-04-19 06:23:43
【问题描述】:
我有以下控制器,它允许我使用以 /api/v1/report/123.csv 结尾的 URL 通过 CSV 下载文件:
[RoutePrefix("api/v{version:int?}/report")]
public class ReportController : ApiController
{
// ...
[Route("{id}.{ext}", Name="DownloadCsvReport")]
public HttpResponseMessage Get(int id, String ext)
{
//...
}
}
是否有任何帮助程序可以构建正确的 URL?我正在尝试链接到 MVC4.5 页面中的文件,但我似乎无法获得扩展名或版本:
@Url.HttpRouteUrl("DefaultApi", new { controller = "Report", ext="csv", version=1, id = 3, })
@Url.RouteUrl(routeName: "DownloadCsvReport", routeValues: new { id=123, version=1, ext = "csv"})
@Url.Action("DownloadCsvReport", new { id = 123, ext="csv" })
@Url.RouteUrl("DefaultApi", new { httproute = true, controller = "Report", id = 123, Ext="csv", version =1 })
我不认为我在这些方面都走在正确的轨道上......它们都没有替代 routeprefix 中的版本或 route 属性中的 ext,以及各种其他问题。有什么方法可以链接到 URL 而无需硬编码路径?
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api html-helper asp.net-web-api-routing