Использование роутинга в классических ASP.NET приложениях

Опубликовано 10.06.2009 21:51:06

Честно говоря, мне не очень нравится идея System.Web.Routing, и я бы использовал ISAPI Rewrite, но люди пытаются, у всех свои задачи и причины, и иногда не получается. В общем, это пост из серии "Спрашивали – отвечаем".

  1. Добавляем Reference на сборку System.Web.Routing и ссылки на модули в web.config. routing-reference
    Web.config:
    <modules>
       ...
       <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </modules>
  2. Создаем класс global.asax, в котором инициализируем таблицу маршрутизации.
    protected void Application_Start(object sender, EventArgs e)
    {
       RegisterRoutes(RouteTable.Routes);
    }
    
    private void RegisterRoutes(RouteCollection routeCollection)
    {
       RouteTable.Routes.Add(new Route("{username}", new UsersRouteHandler()));
    }

  3. Создаем класс, реализующий интерфейс IRouteHandler, в котором заполняем HttpContext нужными данными, которые будут переданы на целевую страницу.
    public class UsersRouteHandler : IRouteHandler
    {
       IHttpHandler IRouteHandler.GetHttpHandler(RequestContext requestContext)
       {
          string userName = requestContext.RouteData.GetRequiredString("username");
      
          HttpContext.Current.Items["username"] = userName;
          return (Page)BuildManager.CreateInstanceFromVirtualPath(
             String.Format("~/users.aspx", userName),
             typeof(Page));
       }
    }

Скачать RoutingApp.zip (25Kb)

Комментарии

18.06.2009 22:11:27

build_your_web

добавлю в rss reader. спасибо за интересный материал.

build_your_web

Добавить комментарий


(Отображает Gravatar)

biuquote
  • Комментарий
  • Предпросмотр
Loading