Маршрут поиска в ASP.NET MVC - PullRequest
       21

Маршрут поиска в ASP.NET MVC

7 голосов
/ 31 марта 2010

У меня есть простая форма поиска на главной странице, а также контроллер поиска и просмотра. Я пытаюсь найти следующий маршрут для строки поиска «myterm» (например): корень / поиск / myterm

Форма на главной странице:

<% using (Html.BeginForm("SearchResults", "Search", FormMethod.Post, new { id = "search_form" }))
                           { %>
                        <input name="searchTerm" type="text" class="textfield" />
                        <input name="search" type="submit" value="search" class="button" />
                        <%} %>

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

public ActionResult SearchResults(string searchTerm){...}

Маршрут, которым я пользуюсь:

routes.MapRoute(
          "Search",
          "search/{term}",
          new { controller = "Search", action = "SearchResults", term = (string)null }
        );

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

Я всегда получаю URL "root / search" без поискового запроса, независимо от того, какой поисковый запрос я вводю.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 31 марта 2010

Поэтому, если я вас правильно понимаю, вы пытаетесь проложить маршрут, чтобы вы могли перейти к http://www.whatever.com/search/blah, и вы будете перенаправлены к действию SearchResults с параметром searchTerm, равным «blah».

Об этом позаботится следующий маршрут:

routes.MapRoute(
              "Search",
              "search/{searchTerm}",
              new { controller = "Search", action = "SearchResults" }
            );

Убедитесь, что маршрут ДО ДО маршрута по умолчанию, иначе сначала будет найдено соответствие по умолчанию. Обратите внимание, что «термин» изменен на «searchTerm», чтобы соответствовать параметру в вашем действии. Это необходимо.

3 голосов
/ 31 марта 2010

Вы используете id в своем теге beginform и {term} в своем маршруте.

Два должны совпадать.

...