MVC 3 AREAS - Иерархические рабочие процессы - PullRequest
1 голос
/ 20 сентября 2011

Для проекта, над которым я работаю, у нас есть компании. У компаний есть контакты и возможности. Основываясь на бизнес-правилах, вы выбираете компанию для доступа к контактам или услугам.

EDIT: Сущности - это компании, объекты и контакты.

Поскольку у каждой сущности есть свои собственные рабочие процессы, значит, у каждого из них есть одна ОБЛАСТЬ в коде. Как можно было бы убедиться, что URL-адрес маршрутизации будет выглядеть примерно так:

/ О компании / 1234 / контакт / 456

/ О компании / 1234 / объект / 679

Если бы был путь к следующим областям, который мог бы показаться хорошим, но мог бы испортить код.

1 Ответ

2 голосов
/ 20 сентября 2011

Я не думаю, что вам нужно использовать области

Чтобы сделать то, что вы хотите, можно сделать, определив маршруты в 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 как необязательный, но я надеюсь, что это даст вам идею?

...