Dropdownlist - вызывать iactionresult при каждом выборе элемента, а также получение выбранного значения
Изучаю Asp.net core. Написал для теста простенький DropDownList и хочу чтобы при каждом выборе элемента вызывался IActionResult в контроллере (а лучше обычный отдельный метод), а также чтобы выбранное значение в Dropdownlist вернулось в контроллер, для дальнейшего мною использования.
Есть ли достаточно простой способ это сделать?
Для последнего по идее нужен ViewModel, но без вызова методов в контроллере - это значение собственно никак не получить.
Контроллер
public class AddReqController : Controller
{
public IActionResult Index()
{
List<UserM> users = new List<UserM>
{
new UserM {Id=1, Name="Tom", Age=35 },
new UserM {Id=2, Name="Alice", Age=29 },
new UserM {Id=3, Name="Sam", Age=36 },
new UserM {Id=4, Name="Bob", Age=31 },
};
List<CargoObject> getpers = _context.DBCargo.ToList();
ViewBag.UserM = new SelectList(getpers, "ID", "Name");
return View();
}
}
public class UserM
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
View
@Html.DropDownList("userid", ViewBag.Users as SelectList)
Ответы (1 шт):
Допустим, в контроллере есть метод:
public string CallFromDropDown(string value)
{
return value + " !";
}
Он принимает один параметр строку и возвращает эту же строку с добавленным восклицательным знаком.
Добавим к дропдауну подписку на событие onchange:
@Html.DropDownList("userid", ViewBag.Users as SelectList,
new { @onchange = "selectChanged(this.value)" })
Функция selectChanged отправляет get-запрос в описанный ранее метод и получает результат, который показывается в окошке alert.
function selectChanged(value) {
fetch(`AddReq/CallFromDropDown?value=${value}`)
.then(response => response.text())
.then(data => alert(data))
.catch(error => alert(error))
}
Вам остаётся описать нужную логику в контроллере и логику обработки возвращённых данных.