首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET核心asp-route-*帮助器未正确呈现链接

问ASP.NET核心asp-route-*帮助器未正确呈现链接
EN

Stack Overflow用户
提问于 2020-08-27 06:30:43
回答 1查看 146关注 0票数 0

我有以下路线:

代码语言:javascript
复制
    [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]。

在我看来,我有以下链接:

代码语言:javascript
复制
@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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-27 13:40:00

下面是一个解决方法,如下所示:

代码语言:javascript
复制
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这样的东西就可以了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63606603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档