Почему порядок сопоставления маршрутов имеет значение при смешивании MVC и webforms?

#asp.net-mvc

#asp.net-mvc

Вопрос:

Любопытно, почему объявление MapPageRoute перед маршрутом MVC по умолчанию вызывает проблемы с UrlHelper.GenerateUrl.

Я начал с этого в моем Global.asax.cs:

 public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute( "MyApp", "home/my-app", new { controller = "Home", action = "MyApp" } );
    routes.MapPageRoute( "MyOldWebForm", "oldform.aspx", "~/WebForms/OldForm.aspx" );

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Site", action = "Index", id = UrlParameter.Optional } );
}
  

Любая ссылка в представлении на объявление по умолчанию, подобное @Html.BeginForm() , или результат вызова контроллера, подобный RedirectToAction("Index", "Errors", new {fault = "itemMissing"} ); , выдаст URL «oldform.aspx».

Когда я меняю порядок маршрута MVC по умолчанию на маршрут страницы, он работает так, как ожидалось.

Ответ №1:

Это для asp.net маршрутизация веб-форм. вы можете видеть

http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.mappageroute.aspx

Комментарии:

1. Верно, приложение представляет собой смесь MVC и некоторых старых веб-форм.