Я использую маршрут по умолчанию, так что мне не нужно указывать контроллер.ASP.NET MVC: Empty ActionLinks, отображающийся
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 после id, называемый страницей. Я тупо не включил его в пример, потому что я думал, что это не имеет значения. Если я выберу это, все будет работать.
Таким образом, на самом деле, это работает:
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 }
);
Почему нет?
на какой версии IIS вы были развернуты как те же, что и локальные? – Serghei
IIS6 на сервере, и локально его независимо от того, какой внутренний сервер Visual Studio 2010 запускается, и я считаю, что это IIS 7.5 – roryok
вот в чем проблема: мой ответ ниже – Serghei