如何从RouteConfig.cs获取友好URL与对应aspx页面的映射列表?
获取RouteConfig中页面与友好URL映射列表的简便方法
你不需要手动解析RouteConfig.cs文本,ASP.NET已经提供了现成的路由集合可以直接读取。注册后的路由都会存在RouteTable.Routes里,我们可以从中提取所需的映射关系。
步骤1:定义实体类
先创建你需要的PageNames类:
public class PageNames { public string Page { get; set; } public string FriendlyURL { get; set; } }
步骤2:实现获取方法
编写GetPageNamesFromRouteConfig方法,遍历路由集合,筛选出使用MapPageRoute注册的路由(这类路由的Handler是PageRouteHandler类型),然后提取关键信息:
using System.Collections.Generic; using System.Web.Routing; using System.Web.UI; public List<PageNames> GetPageNamesFromRouteConfig() { var pageNameList = new List<PageNames>(); foreach (RouteBase routeBase in RouteTable.Routes) { // 只处理MapPageRoute创建的路由 if (routeBase is Route route && route.RouteHandler is PageRouteHandler pageHandler) { // 提取友好URL string friendlyUrl = route.Url; // 从完整物理路径中截取页面文件名 string pagePath = pageHandler.VirtualPath; string pageName = System.IO.Path.GetFileName(pagePath); pageNameList.Add(new PageNames { Page = pageName, FriendlyURL = friendlyUrl }); } } return pageNameList; }
步骤3:调用示例
直接调用方法即可得到你需要的列表:
List<PageNames> pageNames = GetPageNamesFromRouteConfig();
补充说明
- 这个方法会自动获取所有通过
MapPageRoute注册的路由映射,无需手动维护配置文本。 - 如果你的友好URL包含参数(比如
user/{id}/profile),route.Url会保留占位符,可根据需求自行处理参数部分。 - 确保在路由注册完成后调用该方法(比如
Application_Start执行完毕后),否则可能获取不到完整的路由列表。
内容的提问来源于stack exchange,提问作者David Skoda
相关产品推荐
相关产品推荐

