我有以下路线:
[HttpGet("symbols/{symbol}/{slug}/news")]
public async Task<IActionResult> News(
[FromRoute] string symbol,
[FromRoute] string slug,
[FromQuery] int perPage,
[FromQuery] int page)
{
...
}路由应该类似于symbols/aapl/apple-inc/news。现在,我还想包括分页,比如symbols/aapl/apple-inc/news?page=2&perPage=20。因此,symbol和slug是[FromRoute],而page和perPage是[FromQuery]。
在我看来,我有以下链接:
@for (...)
{
<a class="page-link"
asp-action="News"
asp-controller="Symbols"
asp-route-symbol="@Model.Symbol.ToLower()"
asp-route-slug="@Model.CompanyNameSlug"
asp-route-page="@i"
asp-route-perPage="@Model.PerPage">
@i
</a>
}但是,这会继续错误地呈现链接,并将符号和段塞作为查询参数:symbols/news?symbol=aapl&slug=aapl-inc&page=11&perPage=5
如何将此链接呈现为symbols/aapl/apple-inc/news?page=2&perPage=20
发布于 2020-08-27 13:40:00
下面是一个解决方法,如下所示:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default1",
pattern: "{controller=Home}/{symbol?}/{slug?}/{action=Index}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});更新:
我找到了另一种方法,不使用asp-route-page.It似乎与剃刀页面中的asp-page之类的东西冲突,改成asp-route-fPage这样的东西就可以了。
https://stackoverflow.com/questions/63606603
复制相似问题