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

Razor Pages如何启用属性的友好URL路由方式?

没问题!完全可以实现这种更友好的URL格式,我来一步步给你讲清楚,顺便帮你理清相关术语:

实现localhost:5001/Id/1格式的URL

在Razor Pages里,只需要修改页面顶部的@page指令,添加自定义路由模板就能搞定:

  • 如果你希望页面专门匹配/Id/1这种带前缀的格式,打开你的目标Razor页面(比如Index.cshtml),把顶部的@page改成:

    @page "Id/{Id:int}"
    

    这里的{Id:int}是路由参数,int是约束,确保只有整数能匹配这个位置的值,避免无效请求。

  • 要是想同时兼容两种格式(既支持/?Id=1,也支持/Id/1),可以给路由参数加可选标记:

    @page "Id/{Id:int?}"
    

    这样不管用户用哪种URL,你的页面模型里的Id属性都会自动被赋值——因为你已经设置了[BindProperty(SupportsGet = true)],它会自动把路由参数(或查询字符串参数)绑定到这个属性上,不用额外改模型代码。

关于术语的澄清

你提到的“设置属性的这种方式”其实包含两个不同的概念:

  1. 路由(Routing):指的是把localhost:5001/Id/1这样的URL匹配到对应Razor页面的过程,也就是我们上面配置的@page模板的作用,它决定了请求能找到哪个页面。
  2. 模型绑定(Model Binding):指的是把URL里的参数(不管是路由里的Id还是查询字符串里的Id)赋值给页面模型的Id属性的过程,你用的[BindProperty(SupportsGet = true)]就是开启了GET请求下的模型绑定,让这个属性能接收来自URL的参数。

简单总结:路由负责“找页面”,模型绑定负责“给属性赋值”。

内容的提问来源于stack exchange,提问作者Jakob Busk Sørensen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:58:03