You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 6 MVC分页列产品时遇HTTP 404错误求助

解决ASP.NET Core 6 MVC中/products页面404错误

问题根源

当前路由配置存在匹配优先级问题:

  • pages路由的{slug?}模式会优先捕获/products请求,将其当作页面slug尝试调用PagesController.Page方法,但不存在对应页面,导致404。
  • 现有products-category路由仅匹配带分类slug的/products/{categorySlug}路径,未覆盖/products的直接访问场景。

解决方案

提供两种可行修复方式,任选其一即可:

方式1:添加约定路由

在Program.cs的路由配置中,在products-category路由前新增匹配/products的路由规则:

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
      "pages",
      "{slug?}",
      defaults: new { controller = "Pages", action = "Page" }
    );

    // 新增路由:匹配/products路径,指向Products.Index
    endpoints.MapControllerRoute(
        "products-index",
        "products",
        defaults: new { controller = "Products", action = "Index" }
    );

    endpoints.MapControllerRoute(
        "products-category",
        "products/{categorySlug}",
        defaults: new { controller = "Products", action = "ProductsByCategory" }
    );

    endpoints.MapControllerRoute(
        name: "areas",
        pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}"
    );

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}"); 
});

方式2:使用属性路由(推荐)

直接在ProductsController的方法上添加路由属性,无需修改Program.cs的约定路由:

public class ProductsController : Controller
{
    private readonly FlowerShopContext context;
    public ProductsController(FlowerShopContext context)
    {
        this.context = context;
    }

    // 用属性路由绑定/products路径
    [Route("products")]
    public async Task<IActionResult> Index(int p = 1)
    {
        // 原方法逻辑不变
    }

    // 用属性路由绑定/products/{categorySlug}路径
    [Route("products/{categorySlug}")]
    public async Task<IActionResult> ProductsByCategory(string categorySlug, int p = 1)
    {
        // 原方法逻辑不变
    }
}

验证

修改完成后重启项目,访问https://localhost:7179/products即可正常加载所有产品页面。

内容的提问来源于stack exchange,提问作者Đuro Jovičić

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:15:19