ASP.NET MVC 4 - 2 зоны с сегментами, 1 зона без - PullRequest
5 голосов
/ 02 апреля 2012

Я только что создал свежее ASP.NET MVC 4 решение, добавил 3 Области и хотел бы, чтобы они маршрутизировались, как указано:

1. General         -> http://www.mysite.com/
2. Members         -> http://www.mysite.com/members/
3. Administration  -> http://www.mysite.com/administration/

Я могу настроить маршрутизацию так, чтобы «Общая» область работала, когда это первый сегмент, но, кажется, не может заставить мою маршрутизацию работать во всех 3 областях, когда я не хочу, чтобы «Общая» отображалась как сегмент в URL. Как вы видите, я стремлюсь к чистой структуре URL.

Я планирую добавить несколько контроллеров / представлений для каждой области и хотел бы сохранить эту организацию областей.

Я видел похожую проблему MVC 2, опубликованную , но я не уверен, что порядок регистрации областей исправит мою конкретную проблему.

1 Ответ

3 голосов
/ 02 апреля 2012

Откройте файл GeneralAreaRegistration.cs.

Найти это:

context.MapRoute(
    "General_default",
    "General/{controller}/{action}/{id}",
    new { action = "Index", id = UrlParameter.Optional }
);

... и заменить на это:

context.MapRoute(null,
    "{controller}/{action}/{id}",
    new { controller = "General", action = "Index", id = UrlParameter.Optional }
);

Ответ на комментарий:

Предполагается, что вы используете URL http://www.mysite.com/members, и предполагается, что он находится в вашем файле MembersAreaRegistration.cs:

context.MapRoute(
    "Members_default",
    "Members/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

... тогда это должно работать. Однако, если у вас нет фрагмента controller = "Home" в ваших значениях по умолчанию MapRoute, тогда URL должен быть http://www.mysite.com/members/home.

...