如何创建重定向到使用部分路由的路径的ASP.NET路由?

时间:2011-06-30 13:18:45

标签: asp.net asp.net-routing

我想创建一个路由,将匹配特定模式的所有请求重定向到使用模式部分构建的位置。我想在URL中获取一些段,并将其余部分视为Web窗体应用程序中aspx页面的路径。例如

RouteTable.Routes.MapPageRoute("SomeRouteName", "{something}/{*path}", "~/pages/{*path}/Default.aspx");

其中* path可能包含“\”。查询字符串应保留为查询字符串。

是否可以创建一条路线?

2 个答案:

答案 0 :(得分:1)

我不知道有任何办法这样做。

更标准的方法是将目标设置为“〜/ pages / default.aspx”,然后让该页检查{path}参数并显示相应的数据。

如果你真的想要它在另一条路径上,那么不要使用{}占位符。只需硬编码路径的那一部分(源和目标)。

答案 1 :(得分:0)

在查看了几种方法后,我最终创建了自己的路由处理程序,如下所示:

public class SomethingRoutingHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        string something = (string)requestContext.RouteData.Values["something"];
        string path = (string)requestContext.RouteData.Values["path"];

        string virtualPath = "~/" + path + "Default.aspx";

        return BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as Page;
    }
}

然后我在页面中使用RouteData来访问某些内容。我发现这些文章很有帮助:

http://msdn.microsoft.com/en-us/magazine/dd347546.aspx

http://www.xdevsoftware.com/blog/post/Default-Route-in-ASPNET-4-URL-Routing.aspx