ASP.NET MVC: игнорировать последние элементы маршрута в URL для действия формы - PullRequest
1 голос
/ 03 марта 2010

У меня есть URL / products / search, где Products - это контроллер, а Search - это действие. Этот URL содержит форму поиска, атрибут действия которой (и всегда должен быть) / products / search, например;

<%using( Html.BeginForm( "search", "products", FormMethod.Post))

Это работает нормально, пока я не введу подкачку в результатах поиска. Например, если я ищу «т», я получаю список с постраничной рассылкой. Итак, на странице 2 мой URL выглядит так:

/products/search/t/2

Показывает страницу 2 набора результатов для поиска "t". Проблема в том, что форма действия теперь также / products / search / t / 2. Я хочу, чтобы форма всегда публиковалась в /products/search.

Мои маршруты:

routes.MapRoute( "Products search",
        "products/search/{query}/{page}",
        new { controller = "Products", action = "Search", query = "", page = 1 });

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

Как заставить Html.BeginForm () или, более конкретно, Url.Action ("Поиск", "Продукты"), игнорировать страницу / query / в URL-адресе?

Спасибо

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Исправлено добавлением другого маршрута, где запрос и страница не находятся в URL, что является своего рода интуитивно понятным, потому что более конкретный маршрут ниже по порядку

routes.MapRoute(
        "",
        "products/search",
        new { controller = "Products", action = "Search", query = "", page = 1 });

routes.MapRoute(
        "",
        "products/search/{query}/{page}",
        new { controller = "Products", action = "Search"} //, query = "", page = 1 });

routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" });
0 голосов
/ 03 марта 2010

Порядок действительно важен, первый пройденный маршрут соответствует ему. Поэтому ловить все типы маршрутов следует в самом конце. Вот полезный отладчик маршрута, который вы можете использовать, чтобы выяснить, в чем проблема.

Отладчик маршрута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...