ASP.NET MVC проблема маршрутизации? - PullRequest
0 голосов
/ 16 декабря 2010

Почему:

<%= Html.ActionLinkForAreas<UsersController>(c => c.User(), "My Details") %>

Создайте URL, содержащий это:

Пользователи / Пользователь

Но:

<%= Html.ActionLinkForAreas<BlaController>(c => c.Index(1), "My Bla Di Bla")%>

URL-адрес, подобный следующему:

Bla

Вместо этого:

Bla / Индекс

Другими словами, почему действие Index «проглочено». Связано ли это с маршрутизацией, которая выглядит следующим образом:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

routes.RouteExistingFiles = true;
routes.IgnoreRoute("Content/{*wildcard}");
routes.IgnoreRoute("Scripts/{*wildcard}");

routes.MapRoute(
"Default",                                              // Route name
"{controller}/{action}/{id}",                           // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }  // Parameter defaults
);

Или есть другая причина? Как я могу изменить это поведение? Спасибо.

С наилучшими пожеланиями,

Christian

1 Ответ

3 голосов
/ 16 декабря 2010

Поскольку вы указали Index в качестве действия по умолчанию:

routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }  // Parameter defaults
);

Часть action = "Index".Поскольку это действие по умолчанию, всякий раз, когда вы создаете URL для него, часть «Индекс» будет опущена.Это дает вам возможность иметь красивые краткие URL-адреса.Кстати, это же правило относится и к самому контроллеру.При маршрутизации к контроллеру «Home» URL-адреса на it будут исключены из раздела «Home», что позволит вам иметь необработанный базовый URL-адрес, например "/".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...