如何在Razor Pages中配置多路由匹配规则,满足同页面多URL访问需求
调整路由配置方案
你可以直接在对应Razor页面顶部声明多个@page路由模板,单个页面支持绑定多套路由规则,无需拆分页面,调整后配置如下:
// 匹配传入客户ID的场景 @page "/customer/{action}/{id?:long}" // 匹配传入部门+员工名称的场景 @page "/customer/{action}/{department}/{name}"
参数接收与逻辑处理
你只需要在页面对应的Model类中声明对应可空参数,根据参数存在情况走对应业务逻辑即可:
public class EditModel : PageModel { // 第一种场景的接收参数 public long? Id { get; set; } // 第二种场景的接收参数 public string? Department { get; set; } public string? Name { get; set; } public async Task OnGetAsync() { if (Id.HasValue) { // 执行按客户ID查询的逻辑 } else if (!string.IsNullOrEmpty(Department) && !string.IsNullOrEmpty(Name)) { // 执行按部门+员工名称查询的逻辑 } // 剩余表单渲染逻辑复用即可 } }
注意事项
- 两套路由因为参数段数不同,不会出现匹配冲突,会自动根据访问URL的段数匹配对应规则
- 路由匹配遵循从上到下的优先级,如果你后续加更复杂的规则,建议把更精准的路由放在前面声明
内容的提问来源于stack exchange,提问作者Ali EXE
相关产品推荐
相关产品推荐

