我想创建一个路由,将匹配特定模式的所有请求重定向到使用模式部分构建的位置。我想在URL中获取一些段,并将其余部分视为Web窗体应用程序中aspx页面的路径。例如
RouteTable.Routes.MapPageRoute("SomeRouteName", "{something}/{*path}", "~/pages/{*path}/Default.aspx");
其中* path可能包含“\”。查询字符串应保留为查询字符串。
是否可以创建一条路线?
答案 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