如何为Razor Page指定自定义路由名称?
Razor Page 自定义路由实现方式
当然可以为Razor Page指定自定义路由,不过和MVC控制器使用RouteAttribute的方式不同,Razor Page是通过**@page指令**来定义路由规则的,这是Razor Page路由的核心实现方式。
等价于MVC示例的自定义路由实现
如果你想实现和你给出的MVC控制器示例(访问/my-custom/my-index对应目标内容)完全等价的效果,只需要在目标Razor Page的顶部添加带路由模板的@page指令即可:
比如创建一个名为MyCustomIndex.cshtml的页面,内容如下:
@page "/my-custom/my-index" @model MyCustomIndexModel <h1>自定义路由页面</h1>
对应的代码后置文件MyCustomIndex.cshtml.cs:
public class MyCustomIndexModel : PageModel { public void OnGet() { // 页面逻辑处理 } }
此时访问/my-custom/my-index就会直接进入该页面,完全覆盖Razor Page默认的「文件夹/页面名」路由规则。
更灵活的路由配置
你还可以通过@page指令实现带参数的路由,比如:
@page "/products/{productId:int}"
访问/products/123时,productId参数会自动绑定到PageModel的对应属性中。
如果需要给页面设置多个可访问的路由规则,用逗号分隔即可:
@page "/my-custom/my-index" "/custom-index"
这样/my-custom/my-index和/custom-index都能访问到这个页面。
和MVC路由的差异对比
MVC控制器通过类与方法上的RouteAttribute分层定义路由,而Razor Page的@page指令直接在页面层面定义完整的路由模板,无需分层标记,更贴合Razor Page单文件的特性。
内容的提问来源于stack exchange,提问作者Salih Kavaf
相关产品推荐
相关产品推荐

