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

在ASP.NET Core Razor Pages中如何创建命名路由?

在ASP.NET Core Razor Pages中如何创建命名路由?

嗨,太懂这种改完路由要手动翻遍所有页面改链接的崩溃感了!在ASP.NET Core Razor Pages里完全可以实现命名路由,帮你彻底摆脱这种重复劳动,下面给你讲两种常用的实现方式:

方法一:在页面中直接指定命名路由(最直观)

这种方式适合单个页面单独配置,直接在目标页面的@page指令里加上命名参数就行,ASP.NET Core 3.0及以上版本都支持。

比如你原来的some-page页面,在它的.cshtml文件顶部修改@page指令:

@page "/some-page" -name:SomePageRoute
@model SomePageModel

这里的-name:SomePageRoute就是给这个页面的路由指定了一个唯一名称SomePageRoute。

之后所有要跳转到这个页面的链接,都可以用这个名称来替代原来的路径:

<a asp-route="SomePageRoute">Go to some-page</a>

以后你要是想改这个页面的路由路径,只需要把@page里的"/some-page"改成新路径(比如"/new-some-page"),所有用asp-route="SomePageRoute"的链接都会自动指向新路径,根本不用一个个去改!

方法二:在全局路由配置中添加命名路由(适合统一管理)

如果你的页面比较多,想集中管理所有命名路由,可以在Program.cs(ASP.NET Core 6+)或者Startup.cs(旧版本)里配置路由时添加:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

// 这里给指定页面添加命名路由
app.MapRazorPages()
   .AddPageRoute("/SomePage", "SomePageRoute") // 第一个参数是页面路径,第二个是路由名称
   .AddPageRoute("/Products/List", "ProductsListRoute"); // 可以批量添加多个

app.Run();

配置好之后,同样用asp-route指定路由名称来创建链接:

<a asp-route="ProductsListRoute">Go to Products List</a>

额外小贴士

  • 命名路由的名称要保证全局唯一,不然会出现路由匹配冲突的问题,建议用有意义的名称,比如ProductsList、CheckoutPage,方便后期维护。
  • 如果页面有handler方法(比如OnGetDetails),也可以结合命名路由使用,只需要加上asp-route-handler参数就行:
    <a asp-route="SomePageRoute" asp-route-handler="Details">View Details</a>
    

备注:内容来源于stack exchange,提问作者TheMakarik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 16:08:16