如何在Razor Pages(Page.cshtml)中获取路由值?
在Razor Pages中获取路由值的方法
你提到在MVC里可以通过ViewContext.RouteData.Values["Controller"]和ViewContext.RouteData.Values["Action"]来获取对应的路由值,在Razor Pages里,路由体系略有不同,这里的核心是Page路由值,而非MVC里的Controller和Action概念。
针对你给出的URL https://localhost:44320/AdminPanel/Admins,在Razor Pages中可以直接通过以下代码获取完整的页面路由:
var fullRoute = ViewContext.RouteData.Values["Page"]; // 返回结果为 "AdminPanel/Admins"
如果需要拆分这个路由的各个部分,模拟MVC里Controller和Action的拆分逻辑,可以对返回的字符串做简单处理:
var pageRoute = ViewContext.RouteData.Values["Page"]?.ToString(); if (!string.IsNullOrEmpty(pageRoute)) { var routeSegments = pageRoute.Split('/'); var panelName = routeSegments[0]; // 对应MVC里的"AdminPanel" var pageName = routeSegments[1]; // 对应MVC里的"Admins" }
额外补充:如果你的Razor Pages配置了自定义路由参数(比如/AdminPanel/Admins/123里的123),也可以用同样的方式获取指定参数值,比如路由定义包含{id}时,就可以通过ViewContext.RouteData.Values["id"]拿到对应的值。
内容的提问来源于stack exchange,提问作者Ertan Hasani
相关产品推荐
相关产品推荐

