如何从ASP.NET Core中的路由模板生成URL

时间:2019-04-07 00:49:07

标签: c# asp.net-core asp.net-core-routing

我有两个基于同一个共享库library(leaflet) leaflet() %>% addTiles() %>% setView(lat=37.7793,lng=-122.41899999999998,zoom=8) 的单独的ASP.NET Core站点A1A2

BA1分别位于a1.example.com和a2.example.com上,并且它们的控制器的路由模板看起来像

A2

A1

在项目[HttpGet("/Feature1/{featureId}/EditEntry/{entryId}", Name = "EditFeature1Entry")] public IActionResult EditFeature1Entry(long featureId, Guid entryId, string token) { [...] } 中,我将使用

生成一个URL
A1

它将生成:

var url = Url.RouteUrl("EditFeature1Entry", new {featureId = 3, entryId = someGuid, token})

但是要从url = "/Feature1/3/EditEntry/someGuid?token=token" 构建相同的URL,我需要自己生成URL,因为路由未在项目A2中注册(控制器在项目A2中)。

我想做的是将模板放在库A1中的某个位置,并使用URL生成器来执行类似

的操作
B

为了生成

var url = Url.RouteUrlFromTemplate("/Feature1/{featureId}/EditEntry/{entryId}", new {featureId = 3, entryId = someGuid, token}, "https", "a1.example.com", null);

是否有用于此目的的预制工具? 我觉得我可以使用当前Url构建器中存在的大部分功能,但我更希望依赖于框架:)