MVC 3 AREAS - Иерархические рабочие процессы
Для проекта, над которым я работаю, у нас есть компании. Компании имеют контакты и возможности. Основываясь на бизнес-правилах, вы выбираете компанию для доступа к контактам или услугам.
РЕДАКТИРОВАТЬ: Субъектами являются компании, объекты и контакты.
Поскольку у каждой сущности есть свои собственные рабочие процессы, значит, все они имеют в своем коде одну ОБЛАСТЬ. Как можно было бы убедиться, что URL-адрес маршрутизации будет выглядеть примерно так:
/ О компании /1234/ контакт / 456
/ О компании /1234/ объект /679
Если бы был путь к следующим областям, который казался бы хорошим способом, но мог сделать код грязным.
1 ответ
Я не думаю, что вам нужно использовать области
Делать то, что вы хотите, можно, определяя маршруты в global.asax для каждого "субконтроллера", чтобы помочь движку. (Я предположил, что Contact
а также Facility
являются отдельными controllers
?)
Это значит быть очень точным в отношении того, какой шаблон идет по какому маршруту, но я думаю, что нижеприведенное сделает то, что вам нужно.
Добавьте эти 2 новых маршрута в глобальный asax (выше маршрута по умолчанию):
routes.MapRoute(
"ContactRoute", // Route name
"Company/{id}/Contact/{action}/{contactId}", // URL with parameters
new { controller = "Contact", action = "Index"
} // Parameter defaults
);
routes.MapRoute(
"FacilityRoute", // Route name
"Company/{id}/Facility/{action}/{facilityId}", // URL with parameters
new { controller = "Facility", action = "Index"
} // Parameter defaults
);
Я не на 100% на коде, вам может потребоваться определить contactId
а также facilityId
как необязательный, но я надеюсь, что это дает вам идею?