У меня есть контроллер Home с Index()
и Foo(int id)
действиями и маршрутизацией, подобными этим:
routes.MapRoute("Foo", "{id}", new { controller = "Home", action = "Foo" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Таким образом, URL-адреса, такие как /
и /123
, работают так, как должны. Однако, когда URL-адрес /blahblah
, где blahblah
не является допустимым именем действия, я получаю сообщение об ошибке
Словарь параметров содержит пустую запись для параметра 'id' ненулевого типа 'System.Int32'
что, конечно, нормально, потому что действие Foo
получает параметр int вместо int?
Проблема в том, что я не могу использовать int, потому что тогда оба действия Index
и Foo
соответствуют /
URL, поэтому возникает дополнительный ненужный вызов Foo
.
Таким образом, вопрос в том, возможно ли перехватить указанное выше исключение ИЛИ перенаправить все недействительные URL, такие как /blahblah
, на какое-либо другое действие.