Понимание механизма маршрутизации требует практики и опыта.Идея механизма маршрутизации заключается в том, чтобы взять входящий URL-адрес и получить объект обработчика (IHttpHandler), который будет обрабатывать запрос.Что касается вашего вопроса, первый параметр метода расширения MapRoute - это название маршрута.При настройке проекта MVC вы получаете:
routes.MapRoute( _
' "Default" is your route name. It can be null, "" or some other name that you give it
"Default", _
' This is your URL with parameters
"{controller}/{action}/{id}", _
' Parameter defaults
new { .controller = "Home", .action = "Index", .id = UrlParameter.Optional })
Параметр имени маршрута позволяет вам вызывать контроллер и действие, просто используя имя.Например, вместо:
return RedirectToAction("ActionName", "ControllerName", new { paramId = 1234 });
вы можете использовать имя маршрута, например
return RedirectToRoute("MyRouteName", new { paramId = 1234 });
Что касается конфигурации маршрута, она должна выглядеть примерно так:
routes.MapRoute( _
"YourRouteName", _
"ApplicationModule/{id}", _
New With {.controller = "ApplicationModule", .action = "Index", .id = UrlParemeter.Optional })
И поместите эту новую конфигурацию маршрута выше конфигурации по умолчанию, которую MVC дает вам при создании проекта, в противном случае ваша новая конфигурация маршрута никогда не будет перехвачена, и конфигурация по умолчанию всегда будет пытаться разрешить входящие URL-адреса.
И еще одно предложение для конца, вместо использования:
href="<%= ResolveUrl("~/") %>ApplicationModule/Index/<%= Html.Encode(app.id) %>"
используйте Url.Content следующим образом:
href="<%= Url.Content("Index", "ApplicationModule", With New { .id = app.id })"
Это автоматически разрешит ваш виртуальный путьи выглядит немного аккуратнее.Если у вас появится возможность освоить Pro ASP.NET MVC 2 Framework Стивена Сандерсона, вы получите гораздо более четкое представление об URL-адресах и механизме маршрутизации.*