【发布时间】:2017-03-17 13:59:10
【问题描述】:
以前在 SO (post 1, post 2, post 3) 上有人问过这类问题,但没有一个能帮助我。
我有以下路线(在LandingController 类中定义):
[HttpGet]
[Route("connections/{city:name}/map{page?}", Order = 2)]
public Task<ActionResult> Connections(string city, int page = 1)
我试图在我的 Razor 模板中生成一个 URL,如下所示:
@Url.Action("Connections", "Landing", new { city = "madrid", page = 1 })
或
@Url.Action("Connections", new { city = "madrid", page = 1 })
这两个调用都返回null。有人知道为什么吗?
但是,如果我在路由模板中省略页面参数(执行[Route("connections/{city:name}/map", Order = 2)]),则会生成以下URL:/connections/madrid/map/?page=1,这不是我想要的,但它表明我在调用时做错了以上。
【问题讨论】:
-
您能否也说明一下您的 routeconfig 中路由是如何定义的?
-
我的路由是使用属性路由定义的,即在操作方法上方(我已在问题中发布),因此它不在路由配置中。
-
你能试试
[Route("connections/{city:name}/map/{page?}]吗? -
还是不行。
-
@GlenLittle 我能够解决这个问题。我们使用特定于文化的 URL,具体取决于
CurrentCulture,结果发现该特定文化的路由信息没有在我们保存路由配置的数据库中设置,我不断收到nulls。基本上,从@Url.Action获取 null 意味着您要查找的路由尚未配置且不存在。我当时不知道我们在数据库中保存了路由配置。
标签: c# asp.net asp.net-mvc razor asp.net-mvc-5