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)],它会自动把路由参数(或查询字符串参数)绑定到这个属性上,不用额外改模型代码。
关于术语的澄清
你提到的“设置属性的这种方式”其实包含两个不同的概念:
- 路由(Routing):指的是把
localhost:5001/Id/1这样的URL匹配到对应Razor页面的过程,也就是我们上面配置的@page模板的作用,它决定了请求能找到哪个页面。 - 模型绑定(Model Binding):指的是把URL里的参数(不管是路由里的
Id还是查询字符串里的Id)赋值给页面模型的Id属性的过程,你用的[BindProperty(SupportsGet = true)]就是开启了GET请求下的模型绑定,让这个属性能接收来自URL的参数。
简单总结:路由负责“找页面”,模型绑定负责“给属性赋值”。
内容的提问来源于stack exchange,提问作者Jakob Busk Sørensen
相关产品推荐
相关产品推荐

