Можно ли сопоставить строковый (дружественный) идентификатор с параметром цифра c идентификатор в методах действия (непосредственно перед вызовом действия)? - PullRequest
0 голосов
/ 09 марта 2020

Во-первых, проблема заключается в том, чтобы перейти с URL-адресов с нумерацией c id на URL-адреса с понятным идентификатором (например, имя связанного содержимого вместо его идентификатора). Я хотел бы сделать самые минимальные изменения в коде. Поэтому я подумал о механизме, который бы просто отображал дружественные идентификаторы в соответствующие номера чисел c. Проблема заключается в том, как здесь работает маршрутизация в ASP. NET MVC. Более конкретно, процесс привязки параметров.

Для параметров сложного типа я могу использовать пользовательский IModelBinder. Однако здесь у нас просто есть параметры числовых c значений (идентификаторов), и я не знаю, как перехватить привязку по умолчанию для примитивных типизированных параметров. Как я понимаю, привязка по умолчанию преобразует строку цифр c (например, «3») в значение нумерации c (например, 3). Если бы я мог перехватить и изменить эту привязку по умолчанию, я мог бы, например, преобразовать "three" в число c значение 3. В результате URL типа http://mysite/content/three будет работать так же, как http://mysite/content/3 (старый стиль).

Не могли бы вы предложить какие-либо возможные подходы или решения этой проблемы? Я действительно не хочу создавать другой метод действия, чтобы иметь дело с этим (потому что каждый старый метод потребует более нового, код станет грязным). Сам перехват и реализация привязки параметров - лучший и самый удачный подход.

...