2016-02-03 2 views
1

У меня есть сайт MVC5 с несколькими областями в нем. Каждая область имеет свой собственный набор контроллеров, и, очевидно, каждый контроллер имеет индекс Index.cshtml по умолчанию в качестве целевой страницы. Все идет нормально.По умолчанию целевая страница для области, не зависящей от контроллера по умолчанию?

Но как я могу реализовать целевую страницу для Района? Я не думаю, что может быть целевая страница для области, не зависящей от контроллеров, поэтому, возможно, мне нужно будет использовать классный контроллер для дома, который будет предлагать целевую страницу.

Дело в том, что Я хочу URL, как это работает:

http://www.domain.exe/AreaN/ 

в настоящее время, что не работает, если я не делаю это так:

http//www.domain.exe/AreaN/Controller/ 

в этот момент моя зона регистрации маршрута выглядит так:

context.MapRoute(
      "AreaN_default", 
      "AreaN/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional }, 
      new string[] { "Namespace" } 
     ); 

ответ

0

Я не слишком хорошо знаком с Районами, но не мог бы вы просто определить controller в ваших вариантах маршрута?

context.MapRoute(
      "AreaN_default", 
      "AreaN/{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      new string[] { "Namespace" } 
     ); 

Тогда AreaN/Home/Index будет вашим представлением по умолчанию.

Как поясняет в своем комментарии NightOwl888, это делает контроллер дополнительным, поскольку контроллер по умолчанию теперь является домашним контроллером.

+1

Этот ответ верный, но может использовать немного больше объяснений. Причина, по которой URL-адрес области OP не работает, заключается в том, что «контроллер» не имеет значения по умолчанию, что делает его обязательным * значением *. Причина, по которой эта работа работает, заключается в том, что вы сделали опцию 'controller' необязательным, указав значение в качестве значения по умолчанию. К сожалению, инструмент Visual Studio не устанавливает его как значение по умолчанию, что делает его действовать иначе, чем маршрут по умолчанию (который устанавливает все параметры необязательно). Я думаю, что они сделали это, чтобы избежать столкновений, когда контроллеры/области имеют одно и то же имя. – NightOwl888

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