我有一个ASP.NET(而不是mvc)应用程序,我想使用路由映射来转换包含代理键的URL(最终用户熟悉并用于引用各种项目)说www / entity / 321654789,使用原始密钥调用页面,如下所示:www / page.aspx?id = 103457
这样做的最佳方法是什么?我的研究只发现了两种方法,自定义URL路由处理程序,并让页面知道新参数。有更好的方法吗?如果没有,两种已知方法中的哪一种更好?
答案 0 :(得分:1)
路由是双向映射。据我所知,扩展RouteHandler只能用于映射传入路由。但是对于生成网址(用于链接您的网页),这种方法无法正常工作。
因此,更好的选择是inherit RouteBase(或路由)进行高级路由自定义。您只需要覆盖GetRouteData以将URL映射到路由值的字典,并override GetVirtualPath将路由值的字典映射到URL。按照惯例,如果两个方法都不匹配任何值,则两个方法都应返回null
(并且路由框架将尝试注册下一个Route)。
然后只需在RouteConfig文件中配置自定义路由。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
// Add a custom Route instance.
routes.Add(new MyCustomRoute());
// Add other routes...
}
}
就您的代理键而言,您可以使用几种不同的方法。