Поиск различных строительных блоков выполняется в жизненном цикле запроса. Одним из первых шагов в жизненном цикле запроса ASP.NET MVC является сопоставление запрошенного URL-адреса с правильным методом действия контроллера. Этот процесс называется маршрутизацией. Маршрут по умолчанию инициализируется в файле Global.asax и описывает платформе ASP.NET MVC, как обрабатывать запрос. Если дважды щелкнуть файл Global.asax в проекте MvcApplication1, отобразится следующий код:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing;
namespace MvcApplication1 {
public class GlobalApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index",
id = "" } // Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
В обработчике событий Application_Start (), который запускается при компиляции приложения или перезапуске веб-сервера, регистрируется таблица маршрутов. Маршрут по умолчанию называется Default и отвечает на URL в виде http://www.example.com/{controller}/{action}/{id}. Переменные между {и} заполняются фактическими значениями из URL запроса или значениями по умолчанию, если в URL нет переопределения , Этот маршрут по умолчанию будет сопоставлен с контроллером Home и методом действия Index в соответствии с параметрами маршрутизации по умолчанию. У нас не будет никаких других действий с этой картой маршрутизации.
По умолчанию все возможные URL могут быть сопоставлены через этот маршрут по умолчанию. Также возможно создание собственных маршрутов. Например, давайте сопоставим URL http://www.example.com/Employee/Maarten с контроллером Employee, действием Show и параметром firstname. Следующий фрагмент кода может быть вставлен в только что открытый файл Global.asax. Поскольку платформа ASP.NET MVC использует первый соответствующий маршрут, этот фрагмент кода должен быть вставлен выше маршрута по умолчанию; в противном случае маршрут никогда не будет использоваться.
routes.MapRoute(
"EmployeeShow", // Route name
"Employee/{firstname}", // URL with parameters
new { // Parameter defaults
controller = "Employee",
action = "Show",
firstname = ""
}
);
Теперь давайте добавим необходимые компоненты для этого маршрута. Прежде всего, создайте класс с именем EmployeeController в папке Controllers. Вы можете сделать это, добавив новый элемент в проект и выбрав шаблон класса контроллера MVC, расположенный под Web | Категория MVC. Удалите метод действия Index и замените его методом или действием с именем Show. Этот метод принимает параметр firstname и передает данные в словарь ViewData. Этот словарь будет использоваться представлением для отображения данных.
Класс EmployeeController будет передавать объект Employee в представление. Этот класс Employee должен быть добавлен в папку Models (щелкните правой кнопкой мыши на этой папке, а затем выберите Add | Class из контекстного меню). Вот код для класса Employee:
namespace MvcApplication1.Models {
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
}