Url.Link() 未使用查询字符串生成正确的 link
Url.Link() not generating proper link with querystring
我正在创建一个 ASP.NET 核心 WebAPI,它有一个带有可选参数的路由。在 return 结果中,我将 link 嵌入到 "previous" 和 "next" 页面。我正在使用 Url.Link() 来生成这些 link,但是创建的 link 没有生成正确的 URL.
示例代码:
[HttpGet("{page:int?}", Name = "GetResultsRoute")]
public IActionResult GetResults([FromQuery]int page = 0)
{
...
var prevUrl = Url.Link("GetResultsRoute", new { page = page - 1 });
var nextUrl = Url.Link("GetResultsRoute", new { page = page + 1 });
...
生成的 URL 类似于:
"http://localhost:65061/api/results/1"
我想要的是:
"http://localhost:65061/api/results?page=1"
我做错了什么?
我认为你在这里做的一切。它只是 MVC 能够将 Url.Link 中的 [page] 值与路由约束 HttpGet("{page:int?}", 从而将其附加为 URL 路径的一部分,例如 results/1
从 docs - 与参数不匹配的环境值将被忽略,当显式提供的值覆盖它时,环境值也会被忽略,在 URL 中从左到右。 明确提供但不匹配任何内容的值将添加到查询字符串中。
在你的情况下,
var prevUrl = Url.Link("GetResultsRoute", new { pageX = page - 1 });
会导致
http://localhost:65061/api/results?pageX=1
所以以太自己附加查询字符串参数,删除约束,或者切换到 URL 的 MVC 推荐格式,例如/api/results/xxx
我正在创建一个 ASP.NET 核心 WebAPI,它有一个带有可选参数的路由。在 return 结果中,我将 link 嵌入到 "previous" 和 "next" 页面。我正在使用 Url.Link() 来生成这些 link,但是创建的 link 没有生成正确的 URL.
示例代码:
[HttpGet("{page:int?}", Name = "GetResultsRoute")]
public IActionResult GetResults([FromQuery]int page = 0)
{
...
var prevUrl = Url.Link("GetResultsRoute", new { page = page - 1 });
var nextUrl = Url.Link("GetResultsRoute", new { page = page + 1 });
...
生成的 URL 类似于:
"http://localhost:65061/api/results/1"
我想要的是:
"http://localhost:65061/api/results?page=1"
我做错了什么?
我认为你在这里做的一切。它只是 MVC 能够将 Url.Link 中的 [page] 值与路由约束 HttpGet("{page:int?}", 从而将其附加为 URL 路径的一部分,例如 results/1 从 docs - 与参数不匹配的环境值将被忽略,当显式提供的值覆盖它时,环境值也会被忽略,在 URL 中从左到右。 明确提供但不匹配任何内容的值将添加到查询字符串中。 在你的情况下,
var prevUrl = Url.Link("GetResultsRoute", new { pageX = page - 1 });
会导致
http://localhost:65061/api/results?pageX=1
所以以太自己附加查询字符串参数,删除约束,或者切换到 URL 的 MVC 推荐格式,例如/api/results/xxx