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

Razor Pages动态页面异常:Opponents带参数访问出现404问题求助

解决Opponents页面带参数访问404问题

问题原因分析

  1. 路由配置缺失:Razor Pages默认不会自动将URL后续路径段绑定为页面参数,Years页面能正常工作大概率是因为其.cshtml文件配置了带参数的路由模板,而Opponents页面未做对应配置。
  2. 代码逻辑缩进错误:OnGet方法的else块未用大括号包裹,导致GameSummaries赋值和返回逻辑的执行不符合预期。

解决方案

1. 配置页面路由模板

打开Opponents.cshtml文件,修改顶部的@page指令,添加参数化路由模板:

@page "{Opponent?}"
@model Alpha.Pages.OpponentsModel

{Opponent?}表示该参数为可选,既支持无参数访问/Opponents(触发重定向),也支持带参数访问/Opponents/Centerville(自动绑定参数并渲染页面)。

2. 修正OnGet方法的逻辑缩进

修改Opponents.cshtml.cs中的OnGet方法,为else块添加大括号,确保逻辑正确执行:

using Alpha.Data;
using Alpha.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace Alpha.Pages {
    public class OpponentsModel : PageModel {
        private AlphaContext context;

        public IEnumerable<GameSummary> GameSummaries { get; set; }
            = Enumerable.Empty<GameSummary>();

        public OpponentsModel(AlphaContext ctx) {
            context = ctx;
        }
 
        public IActionResult OnGet(string Opponent) {
            if (Opponent is null)
                return RedirectToPage("OpponentsIndex");
            else
            {
                GameSummaries = context.GameSummaries.Where(s => s.Opponent == Opponent);
                return Page();
            }
        }
    }
}
  • 移除参数前不必要的@符号(参数名无需通过@引用)
  • 使用Page()替代new PageResult(),这是Razor Pages返回当前页面的标准写法

3. 验证路由匹配

确保项目路由配置中没有自定义规则覆盖Opponents页面的路由。如果Program.cs中有自定义路由映射,确认不存在冲突规则。

完成以上修改后重启应用,访问/Opponents/Centerville即可正常渲染页面。

内容的提问来源于stack exchange,提问作者Jim Becker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 22:37:35