0

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

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

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

是否可以创建这样的路线?

4

2 回答 2

1

我不知道有什么办法可以那样做。

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

如果您真的希望它在另一条路径中,则不要使用{}占位符。只需硬编码路径的该部分(源和目标)。

于 2011-06-30T13:24:58.737 回答
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

于 2011-07-05T14:43:18.647 回答