ASP.NET MVC параметр поиска URL без вопросительного знака - PullRequest
3 голосов
/ 23 февраля 2010

У меня есть маршрут, определенный как:

routes.MapRoute ( "AllUsers",
"Пользователи / Поиск / {Поиск}", новый { Контроллер = "Пользователи", действие = "Индекс"});

и форма как:

<% using (Html.BeginForm("Index", "Users/Search/", new { RouteValue = "AllUsers" }, FormMethod.Get, new { id = "searchForm" })){%>
 <input id="searchBox" name="search" type="text" />
 <input type="submit" id="submit" value="Search" /><%} %>

В настоящее время, как и ожидалось, создается URL-адрес
../Users/Search/?search=searchTerm
но я бы хотел:
../Users/Search/searchTerm

Как это возможно? Я думал об использовании JavaScript, но это кажется немного грязным. Есть ли более рациональный способ сделать это?

Ответы [ 5 ]

2 голосов
/ 24 февраля 2010

Как насчет перенаправления на стороне сервера?

2 голосов
/ 23 февраля 2010

Вы не можете сделать это с помощью формы HTML. Хотя вы можете имитировать поведение с помощью JavaScript.

1 голос
/ 23 февраля 2010

Вы можете сделать:

<input type="submit" id="submit" value="Search" 
    onclick="$('form').attr('action', $('form').attr('action') + $('#searchBox').val());" />

Что немного уродливо. Вы также не можете использовать форму и иметь это:

<input type="button" id="submit" value="Search" 
    onclick="window.location.href = 'search/' + $('#searchBox').val();" />

Помимо этого, вы можете разрешить исходной отправке перейти на странный URL, но используйте RedirectToAction в вашем контроллере.

0 голосов
/ 23 февраля 2010

Попробуйте изменить так:

routes.MapRoute("AllUsers",
"Users/Search/{id}", new { Controller = "Users", action= "Index"});

и форма как:

<% using (Html.BeginForm("Index", "Users/Search/", 
  new { RouteValue = "AllUsers" }, FormMethod.Get, new { id = "searchForm" })){%>
  <input id="searchBox" name="id" type="text" />
  <input type="submit" id="submit" value="Search" /><%} %>

Не проверено, но "id" - это значение маршрута по умолчанию, которое не создает "? Name = value".

0 голосов
/ 23 февраля 2010

Используя jQuery, вы можете сделать что-то вроде этого:

<script type="text/javascript">
        $(function(){
            $("#submit").click(function(){
                document.location.href = $("form").attr("action") + $("#searchBox").val();
                return false;
            });
        });
    </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...