asp.net 4,0 маршрутизации веб-форм - маршрут значения по умолчанию/подстановочного знака

Я там простой путь при использовании ASP.NET 4,0 маршрутизации с Веб-формами для создания маршрута, который будет действовать как некоторый подстановочный знак?

Мне кажется, что в WebForms, необходимо указать маршрут для каждой страницы - я ищу некоторый универсальный маршрут, который может использоваться, где ничто определенное не требуется, возможно, отображаясь непосредственно от пути до пути так...

http://somedomain.com/folder1/folder2/page возможно отобразился бы на folder1/folder2/page.aspx

Какие-либо предложения?

Спасибо

12
задан skaffman 24 April 2010 в 13:29
поделиться

1 ответ

Вы можете сопоставить все оставшиеся маршруты следующим образом:

routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");

В этом случае мы знаем все маршруты и хотим отправить что-нибудь еще "отсутствующему" / 404 стр. Только не забудьте указать этот маршрут как последний , так как это подстановочный знак, и он будет перехватывать все.

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

routes.Add(new Route("{*value}", new DefaultRouteHandler()));

Этот класс обработчика будет выполнять сопоставление с подстановочными знаками, примерно так:

public class DefaultRouteHandler : IRouteHandler
{
  public IHttpHandler GetHttpHandler(RequestContext requestContext)
  { 
    //Url mapping however you want here:
    var pageUrl = requestContext.RouteData.Route.Url + ".aspx";

    var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl, typeof(Page)) 
               as IHttpHandler;
    if (page != null)
    {
      //Set the <form>'s postback url to the route
      var webForm = page as Page;
      if (webForm != null) 
         webForm.Load += delegate { webForm.Form.Action = 
                                    requestContext.HttpContext.Request.RawUrl; };
    }
    return page;
  }
}

Это немного нечетное места, чтобы предотвратить горизонтальную прокрутку, но вы получите общую точку. Опять же, убедитесь, что это последний маршрут, иначе он будет обрабатывать все ваши маршруты.

24
ответ дан 2 December 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: