Кажется, это должно быть довольно просто, но я, очевидно, растерялся.
У меня есть представление списка, в котором отображается постраничный список. Внизу у меня есть набор ссылок:
<%= Html.ActionLink("First Page", "List", new { page = 1} ) %>
<%= Html.ActionLink("Prev Page", "List", new { page = Model.PageNumber - 1 }) %>
<%= Html.ActionLink("Next Page", "List", new { page = Model.PageNumber + 1 }) %>
<%= Html.ActionLink("Last Page", "List", new { page = Model.LastPage } )%>
Я использую базовую настройку маршрутов по умолчанию, за исключением того, что вместо "Index" вместо "Index" указано:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "List", id = UrlParameter.Optional } // Parameter defaults
);
Проблема в том, что помощники ActionLink генерируют ссылки вида:
http://localhost:2083/Retrofit?page=2
, а не
http://localhost:2083/Retrofit/?page=2
(с косой чертой после имени контроллера и перед строкой запроса). Когда первый URL маршрутизируется, он полностью теряет строку запроса - если я посмотрю на Request.QueryString к тому времени, когда он попадет в контроллер, он будет нулевым. Если я введу второй URL-адрес (с завершающей косой чертой), он будет указан правильно (т. Е. QueryString из "page = 2").
Так как же я могу заставить помощника ActionLink сгенерировать правильный URL-адрес или заставить Routing правильно проанализировать, что генерирует ActionLink?
Спасибо.