Не удается направить мои входные параметры в метод действия моего контроллера
У меня проблемы с передачей данных из текстового поля в параметры действия контроллера.
Я пытаюсь заставить 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);
});