4
我有以下的控制器,讓我使用在/api/v1/report/123.csv結尾的URL通過CSV下載文件:HttpRouteUrl和的WebAPI屬性路由2
[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中的版本或ext中的路由屬性,加上各種其他問題。有沒有辦法鏈接到URL而不硬編碼的路徑?
謝謝!當我從動態對象中省略「控制器」時,這兩項工作都很完美。它看起來像在查詢字符串上附加了一個額外的「controller = Report」。 – mikebridge
這是正確的...我們不需要控制器在這裏,因爲這是屬性路由..我已經更新了我的答案上面...感謝您的發現。 –