Я создаю приложение MVC, состоящее из объектов, на которые можно ссылаться двумя разными уникальными идентификаторами, уродливым идентификатором, сгенерированным системой, и более удобным для пользователя 5-символьным «коротким кодом». Например, я хотел бы, чтобы мои конечные пользователи могли вводить следующие URL-адреса в своих браузерах:
Опять же, оба кода уникальны. У меня правильно настроена маршрутизация для первого URL. Когда пользователь вводит этот URL-адрес, он получает соответствующую страницу, отображающую индексную страницу для объекта: PRJ201104.
Как настроить маршрут для обработки второго сценария? Желательно, чтобы был способ «обмануть» MVC, чтобы он изменил значение, которое он передает контроллеру, из короткого кода в проект.
Я хотел бы перехватить 5-символьный маршрут с коротким кодом, взять предоставленное значение и найти его в моей таблице сущностей, а затем, если я найду соответствующую запись, я хотел бы либо (в порядке предпочтения):
- Отображать индексную страницу объектов, сохраняя при этом короткий код в URL-адресе. В этом сценарии я хотел бы «обмануть» контроллер, обрабатывающий маршрут, заставив его думать, что переданный «id» на самом деле является уникальным идентификатором, а не коротким кодом (чтобы не пришлось рефакторить мой существующий код)
- Перенаправьте URL-адрес на тот, у которого есть работающий уникальный (уродливый) идентификатор.
И если я не найду подходящую сущность, используя это значение короткого кода, я позволю продолжить свою стандартную обработку маршрута (так, например, мои контроллеры «Ошибка» и «Администратор», которые также состоят из 5 символов, но не короткие коды , будет продолжать работать надлежащим образом).
ТИА