У меня есть следующий маршрут, определенный в моем Global.asax (веб-проект MVC 3):
routes.MapRoute(
"BlogCategory", // Route name
"Blog/Category/{*category}", // URL with parameters
new { controller = "Blog", action = "Index", category = "" } // Parameter defaults
);
И мое действие принимает параметр категории, выглядящий так:
public ViewResult Index(string category, int page = 1)
{
PostListViewModel viewModel;
if (string.IsNullOrEmpty(category))
{
....show all cats else show only the one passed in
Это отлично работает и передаст категорию контроллеру, соответствующим образом отфильтровав мои результаты.
Моя проблема в том, что одна из созданных мной категорий выглядит так для названия категории:
Проекты / Лаборатория
(обратите внимание на пробелы и косую черту)
Это создает URL-адрес, подобный этому:
/Блог/Категория/Проекты%20/%20Lab
И когда я перехожу по ссылке, я получаю эту ошибку:
Описание: HTTP 404. Ресурс, который вы ищете (или одна из его зависимостей), мог быть удален, его имя было изменено или он временно недоступен. Просмотрите следующий URL-адрес и убедитесь, что он написан правильно.
Запрошенный URL: /Блог/Категория/Проекты/Лаборатория
Он никогда не достигает действия индекса при отладке.
Мой вопрос в том, как я могу заставить это работать, или я должен выполнить некоторую проверку ввода при создании имен категорий, чтобы этого не произошло?