Поделиться через


Создание пользовательских маршрутов (VB)

от Майкрософт

Узнайте, как добавить пользовательские маршруты в приложение ASP.NET MVC. В этом руководстве описано, как изменить таблицу маршрутов по умолчанию в файле Global.asax.

В этом руководстве описано, как добавить пользовательский маршрут в приложение ASP.NET MVC. Вы узнаете, как изменить таблицу маршрутов по умолчанию в файле Global.asax с помощью пользовательского маршрута.

В ASP.NET приложениях MVC таблица маршрутизации по умолчанию будет работать нормально. Однако вы можете обнаружить, что у вас есть специализированные потребности в маршрутизации. В этом случае можно создать пользовательский маршрут.

Представьте, например, что вы создаете приложение блога. Вы можете обрабатывать входящие запросы, которые выглядят следующим образом:

/Archive/12-25-2009

Когда пользователь вводит этот запрос, вы хотите вернуть запись в блоге, соответствующую дате 25.012.2009. Чтобы обработать запрос этого типа, необходимо создать пользовательский маршрут.

Файл Global.asax в листинге 1 содержит новый пользовательский маршрут с именем Blog, который обрабатывает запросы, которые выглядят как /Archive/entry date.

Листинг 1. Global.asax (с пользовательским маршрутом)

Public Class MvcApplication
    Inherits System.Web.HttpApplication
    Shared Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
        ' MapRoute takes the following parameters, in order:
        ' (1) Route name
        ' (2) URL with parameters
        ' (3) Parameter defaults
        routes.MapRoute( _
            "Blog", _
            "Archive/{entryDate}", _
            New With {.controller = "Archive", .action = "Entry"} _
        )
        routes.MapRoute( _
            "Default", _
            "{controller}/{action}/{id}", _
            New With {.controller = "Home", .action = "Index", .id = ""} _
        )
    End Sub
    Sub Application_Start()
        RegisterRoutes(RouteTable.Routes)
    End Sub
End Class

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

Пользовательский маршрут блога соответствует любому запросу, который начинается с /Archive/. Таким образом, он соответствует всем следующим URL-адресам:

  • /Archive/12-25-2009

  • /Archive/10-6-2004

  • /Archive/apple

Пользовательский маршрут сопоставляет входящий запрос с контроллером с именем Archive и вызывает действие Entry(). При вызове метода Entry() дата входа передается в качестве параметра с именем entryDate.

Вы можете использовать пользовательский маршрут блога с контроллером в листинге 2.

Листинг 2. ArchiveController.vb

Public Class ArchiveController
    Inherits System.Web.Mvc.Controller
    Function Entry(ByVal entryDate As DateTime)
        Return "You requested the entry from " & entryDate.ToString()
    End Function
End Class

Обратите внимание, что метод Entry() в листинге 2 принимает параметр типа DateTime. Платформа MVC достаточно умна для автоматического преобразования даты входа из URL-адреса в значение DateTime. Если параметр даты входа из URL-адреса не может быть преобразован в DateTime, возникает ошибка (см. рис. 1).

Рис. 1. Ошибка при преобразовании параметра

Диалоговое окно New Project (Новый проект)

Рис. 01. Ошибка при преобразовании параметра (щелкните для просмотра полноразмерного изображения)

Итоги

Цель этого руководства состояла в том, чтобы продемонстрировать, как можно создать пользовательский маршрут. Вы узнали, как добавить настраиваемый маршрут в таблицу маршрутов в файле Global.asax, который представляет записи блога. Мы рассмотрели, как сопоставить запросы записей блога с контроллером с именем ArchiveController и действием контроллера с именем Entry().