Не удается направить мои входные параметры в метод действия моего контроллера

У меня проблемы с передачей данных из текстового поля в параметры действия контроллера.

Я пытаюсь заставить URL выглядеть так:

http://localhost:51124/gifts?searchTerm=test

но когда я ввожу текст в текстовое поле, я получаю URL, который выглядит так:

http://localhost:51124/gifts

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

 routes.MapRoute("Gifts",
            "gifts",
            new { controller = "Gifts", action = "Search" });

Вот код для страницы с текстовым полем и кнопкой для отправки данных текстового поля:

<form method="GET">
     <input type="search" name="searchTerm"/>
     <input type="button" value="Search By Category" onclick="location.href='@Url.Action("Search", "Gifts")'" />
</form>

Вот код для контроллера, который я пытаюсь передать данные безуспешно:

public ActionResult Search(string searchTerm = null)
    {
        var model = db.Gifts.ToList();
        return View(model);
    }

"searchTerm" никогда не получает параметр, который я передаю в текстовое поле. Это всегда ноль.

2 ответа

Создайте элемент формы в вашем представлении с помощью ввода (т. Е. Поля поиска), которое имеет атрибут name, соответствующий параметру, и кнопку отправки.

@using (Html.BeginForm("Search", "Gifts") {
  <input type='text' name='searchTerm' value='' />
  <input type='submit' value='search' />
}

Это вернет метод поиска в контроллере "Подарки", передав значение поля поиска параметру searchTerm.

Вы должны построить это с помощью jquery. добавить класс к входам для использования в качестве селектора

<input type="search" name="searchTerm" class="txtSearch" />
<input type="button" value="Search By Category" class="btnSearch" />

тогда в вашем сценарии

$('.btnSearch').on('click', function(){
    var url = '@Url.Action("Search", "Gifts", new { searchTerm = "----" })'.replace("----", $('.txtSearch').val());
    window.location(url);
});
Другие вопросы по тегам