Если вы хотите использовать типы путей, которые вы указали в своем примере, похоже, вы должны научиться использовать механизм маршрутизации в .NET 3.5. Вы должны иметь возможность использовать типы URL, которые вам нужны, но вам нужно будет создать несколько пользовательских маршрутов и, возможно, собственный обработчик маршрутов, чтобы выполнить это. Механизм маршрутизации в .NET 3.5 очень гибкий и не был разработан специально для MVC ... на самом деле он очень универсален и может обеспечить очень широкий, возможно, неограниченный диапазон переписывания URL.
Уже немного поздно, где я живу, поэтому пример, который я пытался написать, просто не складывается. : P Достаточно сказать, что пользовательский обработчик маршрута и некоторые новые сопоставления маршрутов должны привести вас туда, где вам нужно.
РЕДАКТИРОВАТЬ: Это может быть полезно:
http://codingcockerel.co.uk/2008/05/26/custom-routing-for-asp-net-mvc/
РЕДАКТИРОВАТЬ 2:
Я оставил контроллеров раньше. Маршрутизация просто дает вам возможность использовать виды URL, которые вы хотите. И это хорошо ... виды предложенных вами URL обеспечат лучший опыт SEO в долгосрочной перспективе. Что касается организации ваших контроллеров, я рекомендую сделать это простым:
/Controllers/CarsController.cs
/Controllers/PartsController.cs
/Controllers/EmployeesController.cs
/Controllers/InventoryController.cs
Ваши маршруты будут соответствовать вашим шаблонам URL и превращать их в правильный маршрут к вашему контроллеру, принимая идентификаторы и сопоставляя их с параметрами ваших действий.
РЕДАКТИРОВАТЬ 3:
Итак, теперь, когда я понимаю ваш вопрос более полно, я надеюсь, что смогу ответить на него лучше. Вообще говоря, я думаю, что контроллеры должны отображать 1: 1 с вашими сущностями. Если у вас есть GeneralPart, то у вас должен быть контроллер, предназначенный для управления общими частями. Если у вас есть CarPart, у вас должен быть контроллер, предназначенный для управления автомобильными деталями. Если CarParts - это GeneralParts, и в некоторых случаях они могут вести себя как GeneralParts, то, вероятно, лучше иметь эти аспекты управления на GeneralPartsController, если только это управление не имеет дело с какими-либо специальными атрибутами CarPart ... в этом случае управление должно быть делегировано CarPartsController. Довольно элегантно то, как полиморфизм играет роль в организации контроллеров, и как отношение «является» позволяет вам повторно использовать контроллеры для управления несколькими типами.
Если честно, у вас есть довольно сложный сценарий, с которым я непосредственно не сталкивался при работе с ASP.NET MVC. Я стараюсь по возможности избегать таких сценариев, потому что они порождают сложные вопросы, подобные этим, которые, как правило, субъективны в своих ответах. В конечном счете, вы должны организовать свои контроллеры таким образом, чтобы иметь логический смысл того, как они используются, как они сопоставляются с вашими сущностями, и насколько хорошо они организуют поведение, которое вы заинтересованы представить. Иногда не логично отображать все ваши контроллеры в один объект. Иногда вам нужен «составной» контроллер, который обрабатывает действия, которые работают с несколькими объектами одновременно, или графики объектов. В этих случаях, вероятно, лучше всего иметь контроллеры, выделенные для этих конкретных групп поведения, а не пытаться найти один специфичный для сущности контроллер, который «подходит».