Два параметра в маршруте asp.net mvc

Это модификация вопроса, который я задавал ранее на этом форуме.

Мое действие контроллера:

public ActionResult SearchResults(string searchTerm, int page)...

Мой взгляд:

<%= Html.PageLinks((int)ViewData["CurrentPage"], (int)ViewData["TotalPages"], i => Url.Action("SearchResults", new { page = i }))%>...

Записи маршрута:

routes.MapRoute(
            null,
            "SearchResults",
            new { controller = "Search", action = "SearchResults", page = 1 } // Defaults
        );

        routes.MapRoute(
          "Search",
          "SearchResults/Page{page}",
          new { controller = "Search", action = "SearchResults" },
          new { page = @"\d+" }
        );

Моя цель состоит в том, чтобы иметь пейджинговые ссылки для результатов поиска. Проблема в том, что когда я нажимаю на любую страницу в ссылках на страницы, это дает мне результаты поиска пустого термина поиска. Как я могу передать параметр условия поиска, который является строкой в ​​дополнение к параметру номера страницы? Что я должен указать в маршрутизации?


person vobs    schedule 22.04.2010    source источник


Ответы (2)


Я думаю, что если вы добавите в свой словарь значений маршрута дополнительные данные, которые не определены в вашем маршруте, он добавит их как параметры получения.

Итак, если вы сделаете что-то вроде:

Url.Action("SearchResults", new { page = i, searchterm = "YourSearchTerm" })

Он должен выдать маршрут типа SearchResults/Page2?searchterm=yousearchterm

HTHs,
Чарльз

person Charlino    schedule 22.04.2010

Вы пробовали это в помощнике Html.PageLinks?

Url.Action("SearchResults", new { searchTerm = "your query", page = i })

Обратите внимание на порядок параметров.

person eKek0    schedule 22.04.2010