Каково предпочтительное решение для работы с десятками сопоставлений маршрутов в Global.asax? - PullRequest
1 голос
/ 12 сентября 2010

Я читал следующий ответ о регионах на тему стандартов программирования:

https://softwareengineering.stackexchange.com/questions/1338/worst-coding-standard-youve-ever-had-to-follow/1937#1937

Я склонен согласиться с тем, что говорит @Cumbayah, но я должен признать, чтоесть одно место, где я полагаюсь на регионы, чтобы сохранить код в чистоте.Это в Global.asax, чтобы мой длинный список маршрутов был несколько разборчивым.

Дело в том, что есть 5-10 контроллеров, и у каждого есть несколько маршрутов, некоторые специально для определенных методов действий, а другие большегенеральный.Итак, с этим мы говорим о ~ 30,40,50 определениях маршрутов, определенных в одном методе в Global.asax.Прямо сейчас я разделил их на разные # области для каждого контроллера, чтобы привести их в порядок, но от этого воняет!Есть ли лучший способ для меня это сделать?

Ответы [ 4 ]

4 голосов
/ 12 сентября 2010

1) В полдень рассмотрим использование районов

2) В соответствии с eglasius, рассмотрите возможность перемещения вопросов регистрации маршрута из global.asax в отдельный файл. Проверьте класс RouteInitialiser в примере приложения «Кто может мне помочь», чтобы узнать, как это сделать.

3) Рассмотрите возможность СУХОГО конфигурировать ваш маршрут, приняв более удобный API регистрации маршрутов, такой как restful-routing stuff http://github.com/stevehodgkiss/restful-routing

Стива Ходжкисса

4) Не переживайте. Если у вас много контроллеров, у вас будет много маршрутов. Не могу обойтись;)

Да, и 5) Избавьтесь от своих регионов, потому что регионы сосут задницу;)

2 голосов
/ 12 сентября 2010

Помимо областей, если у вас есть ~ 5-10 для каждого контроллера, что не так с:

ConfigureAccountControllerRoutes(routes);
ConfigureSomeOtherControllerRoutes(routes);

Или, как в моем текущем проекте, даже не в global.asax, а в классе, предназначенном для настройки маршрутов. Это было недавно введено, когда мы начали нуждаться в global.asax для выполнения чего-то еще, кроме маршрутов + регистрация ошибок.

1 голос
/ 12 сентября 2010

Я думаю, вы хотите посмотреть на так называемые " Области "; они должны позволять вам сегментировать код, как вы уже догадались, по областям и указывать маршрутизацию и другие элементы внутри.

0 голосов
/ 12 сентября 2010

Это быстрый взлом, который я использую:

Просто сделайте статическую функцию в вашем контроллере для установки маршрутов, например так:

public static void SetRoutes (ref RouteCollection routes)
{
    routes.MapRoute(...);
}

, а затем вызовите это из вашей функции RegisterRoutes(). По сути, это не делает ничего существенного, но облегчает поддержку большого количества маршрутов и позволяет группировать маршруты по контроллеру.

...