Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
от Майкрософт
Узнайте, как добавить пользовательские маршруты в приложение 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. Ошибка при преобразовании параметра
Рис. 01. Ошибка при преобразовании параметра (щелкните для просмотра полноразмерного изображения)
Итоги
Цель этого руководства состояла в том, чтобы продемонстрировать, как можно создать пользовательский маршрут. Вы узнали, как добавить настраиваемый маршрут в таблицу маршрутов в файле Global.asax, который представляет записи блога. Мы рассмотрели, как сопоставить запросы записей блога с контроллером с именем ArchiveController и действием контроллера с именем Entry().