2012-04-04 20 views
0

Кто-нибудь знает, как предоставить карты маршрутизации для нескольких контроллеров в той же области с несколькими именами параметров?предоставить URL-адрес без уникальных имен параметров

У меня есть запрос о предоставлении URL без имен параметров (только значения) для каждого контроллера с уникальными именами параметров (чтобы избежать неоднозначности)

Возможно ли это?

Я хотел бы получить этот вывод в URL:

/myAreaName1/mycontrollerName1/Edit/12/23 
/myAreaName1/mycontrollerName2/Edit/someValue1/23 

используя что-то вроде этого:

context.MapRoute(
       "mapRouteName1", 
       "myAreaName1/{controller}/{action}/{customID}/{sustomID2}", 
       new { controller = "mycontrollerName1", action = "Index", customID= UrlParameter.Optional, sustomID2= UrlParameter.Optional }, 
       new string[] { "Project.Areas.SomeArea.Controllers" } 
      ); 

context.MapRoute(
       "mapRouteName1", 
       "myAreaName1/{controller}/{action}/{customValue}/{sustomID3}", 
       new { controller = "mycontrollerName2", action = "Index", customValue= UrlParameter.Optional, sustomID3= UrlParameter.Optional }, 
       new string[] { "Project.Areas.SomeArea.Controllers" } 
      ); 

ответ

1

Вы должны использовать RegEx маршруты (я использовал статью об этом, чтобы направить меня на как его создать однажды ... отлично поработал). Я использовал их в прошлом для этого типа вещей. Я бы посоветовал вам не делать этого, поскольку это может привести к ошибкам. Что делать, если вы добавляете правила регулярных выражений, чтобы поймать на основе всех чисел, и использует другой маршрут, если parm имеет нечисловые значения ... тогда пользователь вводит все числовые данные в этом месте? Я думаю, что это приведет к тяжелому обнаружению ошибок.

Хотите что-то лучшее? Означает ли бизнес, что вы используете эти URL-адреса? Вы также можете рассмотреть возможность использования правил перезаписи URL для записи на другой маршрут за пределами структуры MVC, а затем изменить маршруты, чтобы быть более уникальными.

+0

Вместо того, чтобы просто сказать, что это действительно плохая идея, почему бы не включить, почему вы думаете, что это плохая идея? Гораздо полезнее так: –

+0

Шейн Кортрилл, я сделал именно это ... хорошее мышление. – CrazyDart

+0

Спасибо за ваш ответ. Я рассмотрю переписывание URL, что может оказаться лучшим решением. – matendie

Смежные вопросы