вот моя навигационная иерархия.
- Каталог
-Collection
- Медиа
- Атрибуты
- Пользователь
- Коллекция
-Media
- Продукция
- Атрибуты
У меня есть контроллер для всех. Вот как должен выглядеть мой URL
http://Localhost/Catalog/Collection/1 // return all collection for catalogeid 1
http://Localhost/Catalog/Media/1 // return all media for catalogeid 1
http://Localhost/Collection/Media/1 // return all media for collectionid 1
Теперь с маршрутом по умолчанию
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Он ищет действие «Коллекция» в моем контроллере «Каталог», так как я уже определил метод «Список» в контроллере «Коллекция», я не хочу переопределять его в моей «Коллекции»
Тогда я попробовал это
routes.MapRoute(
"Catalog_Collection_List", // Route name
"Catalog/Collection/{id}", // URL with parameters
new { controller = "Collection", action = "List", id = UrlParameter.Optional } // Parameter defaults
);
Но результат тот же.
Другая проблема заключается в том, как создать ссылку, как я упоминал выше.
Я не могу использовать
@Html.ActionLink("Collection","Collection", "List", new { id = 1 })
Как это генерирует ссылку, как
Localhost/Collection/List/1 //I don’t want
Моя конечная цель состоит в том, чтобы все действия, относящиеся к «Коллекции», выполнялись под контроллером «Коллекции».
я не знаю, чего мне не хватает.
надеюсь, мой вопрос ясен.
спасибо за любую помощь.
EDIT
делая мой вопрос более ясным. посмотрите этот образец URL
localhost/Catalog/Media/1 // which gives media for catalog
localhost/Collection/Media/1 // which gives media for collection.
Теперь, согласно обычному способу, я должен определить действие «Media» в каждом контроллере. что я не хочу. То, что я хочу, основано на URL, я хочу вызвать действие «Список» из контроллера «Медиа».
Я надеюсь, что это довольно ясно.