C# 错误的asp路由链接生成

C# 错误的asp路由链接生成,c#,asp.net-mvc,razor,asp.net-core,C#,Asp.net Mvc,Razor,Asp.net Core,我试着做一个分页系统。然而,我有问题,我的代码关于剃刀asp路线 这是控制器: [Route("blog")] public class BlogController : BaseController { [Route("{categorySlug}")] public async Task<IActionResult> Category([FromRoute] string categorySlug, [FromQuery] int page) {

我试着做一个分页系统。然而,我有问题,我的代码关于剃刀asp路线

这是控制器:

[Route("blog")]
public class BlogController : BaseController
{
    [Route("{categorySlug}")]
    public async Task<IActionResult> Category([FromRoute] string categorySlug, [FromQuery] int page)
    {
          return View();
    }
}
但我有以下url:

/Blog/Category?categorySlug=some-slug&page=1

是否有一种方法可以使用
asp route
生成想要的url?

使用
app.UseMvc
Startup.cs

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "BlogRoute",
        template: "blog/{categorySlug}");

    //.. other routes
});
更新链接以使用此路由

<a class="link" asp-route="BlogRoute" 
    asp-route-categorySlug="some-slug"
    asp-route-page="1">1</a>
链接

和链接代码

<a class="link" asp-route="BlogRoute" 
    asp-route-categorySlug="some-slug"
    asp-route-page="1">1</a>
生成此url

/blog/some-slug?value=val1&data=info
但是,如果添加
asp route page=“1”
,它将被忽略,并且输出相同。结果表明,url生成不包括具有特定名称的参数,例如
页面
操作
控制器
区域
工作正常,可能还有更多关键字)。因此,我的解决方案只是专门针对
page
参数名的一种变通方法。如果您尝试添加
操作
控制器
参数,我的解决方案将只生成存根值
/path

这意味着你可以像这样使用
page
以外的其他名称

<a class="link" asp-route="BlogRoute"
    asp-route-categorySlug="some-slug"
    asp-route-pageNum="1">1</a>

更改为
[HttpGet(“{categorySlug}”)]
同样的问题。当我删除
asp-route-page=“1”
时,它会生成一个好的url(
/blog/some slug
),但当添加
asp-route-page=“1”
时,一切都会中断。您在这个控制器上还有其他方法吗?您可能希望尝试将
[Route(“{*categorySlug}”)]
作为一个全面覆盖的路由,以避免路由将该方法添加到url(这样做是因为您的路由没有唯一标识符,它不知道如何使用该方法)。不,我删除了所有其他方法来执行测试@ErikPhilipsAnd全面覆盖路由不起作用。我忘了说我的Startup.cs文件是这样的:
app.UseMvc(routes=>{routes.maprote(name:“default”,模板:{controller=Home}/{action=Index}/{id?}”);})。如果删除此路由,则根本不会生成url。
<a class="link" asp-action="Category" asp-controller="Blog"
    asp-route-categorySlug="some-slug"
    asp-route-page="1">1</a>
[Route("blog")]
public class BlogController : Controller
{
    [Route("{categorySlug}", Name = "BlogRoute")]
    public async Task<IActionResult> Category([FromRoute] string categorySlug, [FromQuery] int page) {
//..
}
<a class="link" asp-route="BlogRoute" 
    asp-route-categorySlug="some-slug"
    asp-route-page="1">1</a>
<a class="link" asp-route="BlogRoute" 
    asp-route-value="val1"
    asp-route-data="info"
    asp-route-categorySlug="some-slug">1</a>
/blog/some-slug?value=val1&data=info
<a class="link" asp-route="BlogRoute"
    asp-route-categorySlug="some-slug"
    asp-route-pageNum="1">1</a>
[Route("{categorySlug}", Name = "BlogRoute")]
public async Task<IActionResult> Category([FromRoute] string categorySlug, [FromQuery(Name = "pageNum")] int page)