Мое требование, чтобы быть в состоянии принять следующие комбинацииДинамически Создание маршрута Параметры в ASP.Net MVC
{Part1}/{Controller}/{Action}
{Part1}/{Part2}/{Controller}/{Action}
{Part1}/{Part2}/{Part3}/{Controller}/{Action}
и передать их в контроллеры и методы, которые преобразовывают Части 1 до 3 в ID, который используется по всей системе. Схема:
string id = part1 + "-" + part2 + "-" + part3
Трассы организованы таким образом, чтобы создать видимость структуры папок и контроллеры/действия, что доступно для тех, «папки».
Я хотел бы придумать способ сделать это, придерживаясь DRY.
Я думаю, возможно, это действие фильтра (который я буду применять повсеместно), что создает новый идентификатор записи в RouteValueDictionary, принимая значения от присутствия частей 1 до 3.
ли это правильный подход или есть лучшее решение?
спасибо.
Спасибо. Я согласен, что ModelBinder - лучшее место, чтобы поставить эту логику. Единственный недостаток, который я вижу, заключается в том, что если я использую id в нескольких классах (как в случае с CategoryId или FolderId), все они должны наследоваться от SpecialModel. Правильно? Есть ли способ закодировать это так, чтобы он работал для ЛЮБОГО класса с полем «id»? –
Вы можете изменить привязку модели по умолчанию к своему собственному, а затем изменить код, чтобы он проверял модель для поля «id», а затем приложил все усилия, чтобы заполнить ее. Вы можете изменить стандартное связывание модели с помощью ModelBinders.Binders.DefaultBinder = new SpecialModelBinder(); '; введите его в 'Startup.cs' или' Global.asax'. –