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

Другие вопросы по тегам