Большинство маршрутов, которые я использую, основаны на маршруте по умолчанию, определенном в стандартном приложении MVC3:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
Однако, если у меня есть маршрут "/ Book / Update / 1" и1 'пропущено, потому что пользователь набрал адрес вручную без 1, выдается ошибка с нулевыми параметрами.Очевидно, мой маршрут требует этого 1 и не является обязательным, но я не буду определять собственный маршрут для каждого из моих действий.Если я включаю пользовательские ошибки, я не уверен, что это за тип ошибки, чтобы перенаправить на соответствующую страницу ошибки html.
Вопрос: Как мне обработать эту ошибку, как 404?Я не вижу никаких проблем с этим подходом, потому что реальность такова, что опускание номера Id на маршруте такое же, как 404 не найдено.
Или я что-то упускаю при разработке моих маршрутов?Кажется, довольно прямо вперед.
Спасибо.
Обновление: Я ценю ответы, приведенные ниже.Они оба разумные подходы.Для большей ясности в моем вопросе позвольте мне остановиться подробнее.Маршрут "/ Book / Update / 1" должен, на мой взгляд, иметь только одну единственную цель.Книга обновлений 1. Любое другое отклонение от этого должно дать сбой и перенаправить на 404. Я не вижу в этом никакого отличия от статической HTML-страницы, которая не существует.Я могу поспорить о функции, которая просто не включена в .net, я просто подумал, что может быть более простой способ.
Update2: Должен был вырыть немного глубже.Вот замечательный пример . Я нашел второй ответ наиболее полезным.