MVC ActionLink пропускает действие, когда действие равно значению маршрута по умолчанию - PullRequest
8 голосов
/ 31 декабря 2010

Для моего приложения определены следующие маршруты:

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

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

И я пытаюсь создать ActionLink для выполнения действия Index на моем AdminController:

@Html.ActionLink("admin", "Index", "Admin")

Однако, когда представление выполняется, ActionLink отображает как (значение действия Index опускается):

<a href="/Admin">admin</a>

Обычно это будет нормально, но это вызывает конфликт с маршрутом "Referral".

ПРИМЕЧАНИЕ: Если я вместо этого использую ActionLink для рендеринга другого действия, такого как «По умолчанию», ActionLink правильно отображает:

<a href="/Admin/Default">admin</a>

Тот факт, что действие «По умолчанию» рендерится правильно, приводит кЯ считаю, что проблема связана со значением по умолчанию, указанным для маршрута.Есть ли способ заставить ActionLink отображать действие «Index»?

1 Ответ

8 голосов
/ 31 декабря 2010

Удалите параметр action по умолчанию для вашего маршрута по умолчанию:

routes.MapRoute(
    "Default", 
    "{controller}/{action}", 
    new { controller = "Home"} //  action omitted
);

Это заставит действие всегда указываться в URL.

...