Помогите решить вопрос маршрутизации в ASP.NET MVC приложении

Имеем следующий маршрут в ASP.NET MVC приложении:

routes.MapRoute("Contact", "Contact", new { controller = "Home", action = "Contact" });

Что означает, что при запуске приложения, если мы руками напишем адрес

http://localhost:14264/Home/Contact

то проблем не будет.

Но вот если мы напишем так:

http://localhost:14264/Home/Contact/Foo

то здесь мы, логично, получим ошибку 404 - такая страница не найдена.

Итак вопрос: как сделать так, что б при вводе в поисковую строку какие-то дополнительные символы и тд после Contact - нас всё равно кидало на Contact, в случае если после ничего нет?

Ну вообще как вариант можно сделать универсальную страничку для ошибки 404 что б при любом неверном запросе пользователя вылазило не дефолтное окно 404 и куча непонятного для простого смертного текста про ошибку на какой-то строке кода при формировании ссылки, а адекватное аккуратное окошко с соответствующим сообщением, и , например, возможностью вернуться на главную страницу сайта. Как по мне, то этот вариант был бы лучшим решением для проблемы.

К тому же, вы же понимаете, что если сделать переадресацию на Contact, то:

1. Если написать это только для строки формирования маршрута от Contact, то если пользователь напишет какой-то бред без точного соблюдения маршрута до этого момента - вас всё равно кинет на универсальную страничку 404 с кучей "бреда".

http://localhost:14264/Home/ContactFoo // в данном случае уже будет 404, а не ваш "откат назад"

2. Если переадресовать любую ошибку на срабатывание Contact - то при возникновении любой ошибки вас всегда будет кидать на Contact. Так чем же это отличается от типичной универсальной странички 404?)


С другой стороны, если вам нужно что б именно после ...Contact/ пользователь "ошибался", и только тогда возникала ошибка, то можете модифицировать в файлике RouteConfig строку где формируется ваша уникальная ссылка следующее:

routes.MapRoute("Contact", "Contact/{*pathinfo}", new {controller = "Home", action = "Contact "});

Должно помочь.

Но на вашем месте я бы всё равно подумала про универсальную страничку для ошибки 404)