ASP.NET MVC ищет маршрут

Я устанавливаю поисковый маршрут:

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

Поисковая форма имеет поле ввода и кнопку. Я хочу поиск с ПОЛУЧЕНИЕМ как ниже.

<% using(Html.BeginForm("Index", "Search", FormMethod.Get))
{%>
    <%:Html.TextBox("q")%>
        
        
    <% } %>
 

Действие с SearchController:

public ActionResult Index(string q)
{
   // search logic here

   return View(new SearchResult(q));
}

URL становится как это: http://localhost:19502/search?q=mvc+is+great

Но я хочу, чтобы поиск был похож: http://localhost:19502/search/mvc+is+great

Как я устанавливаю маршрут или HTML. BeginForm

5
задан p.campbell 13 December 2012 в 23:44
поделиться

2 ответа

Нет простого способа сделать это с помощью одной формы. Предполагаемая функция формы - передавать пары имя / значение - использование MVC этого не меняет.

Итак, ваши варианты:

  • Переопределить функциональность формы с помощью Javascript, обработав событие отправки формы, перенаправив на желаемый URL-адрес и вернув false, чтобы предотвратить фактическую отправку формы
  • Не использовать форму и обработайте событие нажатия кнопки, чтобы выполнить перенаправление.

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

5
ответ дан 14 December 2019 в 19:06
поделиться

Или вы можете создать FormMethod.Post и в своем контроллере вернуть RedirectToActionResult

0
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: