Я использую маршрут по умолчанию, поэтому мне не нужно указывать контроллер.
routes.MapRoute(
"Default",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
С этим я могу создавать URL-адреса, такие как myapp.com/Customers, а не myapp.com/Home/Customers
Когда я тестирую локально, все нормально. Когда я загружаю живую версию, любые ссылки, созданные с помощью Html.ActionLink, пусты. Я знаю, что правильно использую Html.ActionLink, потому что он работает локально:
// Title Action Controller
<%: Html.ActionLink("Manage My Settings", "Settings", "Home") %>
Я удалил все маршруты, кроме пути по умолчанию, попытался указать ActionLink с контроллером и без него и т. Д. Я даже попытался вернуться к наличию контроллера в маршруте, например:
"{controller}/{action}/{id}"
Ничего не работает вживую. Все работает локально. Схожу с ума.
UPDATE
ОК, сделал странное открытие. У меня на самом деле был еще один дополнительный UrlParameter после идентификатора, называемый page. Я тупо не включил это в пример, потому что думал, что это не имеет значения. Если я возьму это, вещи, кажется, работают.
Итак, на самом деле, это работает:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
и это работает!
routes.MapRoute(
"Default",
"{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
но это делает не работает
routes.MapRoute(
"Default",
"{action}/{id}/{page}",
new { controller = "Home", action = "Index",
id = UrlParameter.Optional, page = UrlParameter.Optional }
);
Почему бы и нет?