Как включить gracefull откат на «корневые» контроллеры, если контроллер не найден в области - PullRequest
1 голос
/ 26 августа 2011

У меня приложение ASP.NET MVC3 Razor становится слишком большим, чтобы эффективно управлять им.Чтобы лучше контролировать код, я реализовал Области и перестроил код так, чтобы он находился в соответствующих областях.

Вещи, которые используются из нескольких областей, остаются в «обычной» папке контроллера.

Моя проблема возникает, как только я использую Action или ActionLink из области.Я должен вручную включить параметр маршрутизации под названием 'area = ""', чтобы ссылка работала.

Есть много ссылок, которые нужно изменить, поэтому я попытался откатить выбор контроллера до «корневых» контроллеров, чтобы найти нужный контроллер.Мне пока не повезло.

Что мне нужно сделать, чтобы MVC3 мог выполнять поиск через контроллеры области и продолжать поиск в папке корневых контроллеров, если контроллер не найден?

Спасибо Andreas

1 Ответ

0 голосов
/ 14 сентября 2011

Вы можете сделать это, настроив свои маршруты соответствующим образом.

У каждой области есть свой собственный поставщик маршрутов, а затем есть маршруты в global.ascx.Маршруты действуют как оператор case, когда он сначала пытается найти маршруты в областях, а если он не находит подходящий маршрут, то он падает на маршруты global.ascx.

Итак, в ваших новых областях настройте маршрут перехвата, а в global.ascx настройте маршрут перехвата, и все должно быть в порядке.

Вы можете использовать отладчик маршрута Хаака, чтобы увидеть, чтопроисходит с вашими маршрутами.

...