Я просмотрел устаревшие URL-адреса маршрутизации ASP.Net MVC, передающие идентификаторы строки запроса в действия контроллера и несколько других подобных сообщений для устаревшей маршрутизации URL-адресов, но я не могу обойти ошибку "Данные RouteData должны содержит элемент с именем 'controller' с непустым строковым значением. " Поиск в сети не дал мне никаких подсказок, чтобы решить мою проблему.
Я реализовал класс маршрутизации Legacy, описанный в приведенной выше ссылке, и это то, что я определил в таблице маршрутизации:
routes.Add(
"Legacy",
new LegacyRoute("fooref.aspx",
"FooRef",
new LegacyRouteHandler())
);
routes.MapRoute(
"FooRef",
"{controller}/{action}",
new
{
controller = "Home",
action = "Index",
foo_id = UrlParameter.Optional,
bar_id = UrlParameter.Optional
}
);
Когда я использую отладчик маршрута Фила Хаака, это указывает, что fooref.aspx имеет совпадение, но когда я выключаю отладчик маршрута, я получаю сообщение об ошибке выше. Если я поменяю порядок операторов, я получу «Ресурс не найден» для /ctprefer.aspx, что имеет смысл - так что, похоже, он находит это в качестве действительного маршрута, если поместить в другой порядок.
Где мне нужно объявить эту отсутствующую ссылку на контроллер?
Изменены ли требования к маршрутизации для ASP.NET MVC 2 RTM?