Как создать маршрут ASP.NET, который перенаправляет на путь, который использует часть маршрута? - PullRequest
0 голосов
/ 30 июня 2011

Я хочу создать маршрут, который перенаправляет все запросы, соответствующие определенному шаблону, в местоположение, построенное с использованием частей шаблона. Я хочу захватить некоторый сегмент в URL-адресе, а остальное - как путь к странице aspx в приложении Web Forms. Например

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

Где * путь может быть чем-то, содержащим "\". Строка запроса должна быть сохранена как строка запроса.

Можно ли создать маршрут?

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Я не знаю ни одного способа сделать это таким образом.

Более стандартным способом было бы установить цель как "~ / pages / default.aspx" и затем эту страницу проверитьаргумент {path} и отображение соответствующих данных.

Если вы действительно хотите использовать другой путь, не используйте заполнитель {}.Просто жестко запишите этот раздел пути (как исходный, так и целевой).

0 голосов
/ 05 июля 2011

Изучив несколько способов сделать это, я в итоге создал свой собственный обработчик маршрутизации, который выглядит примерно так:

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

...