Ядро Asp.net: вызов метода контроллера из выпадающего списка - PullRequest
0 голосов
/ 13 июня 2019

У меня есть ViewComponent, который используется в моем макете. ViewComponent содержит раскрывающийся список со списком кампаний для зарегистрированного пользователя. Выбранный элемент является текущей кампанией для пользователя (он хранится в базе данных)

Я хочу обработать событие onchange раскрывающегося списка таким образом, чтобы:

  1. Текущая база данных для пользователя должна быть обновлена ​​в базе данных.
  2. Пользователь должен быть перенаправлен на сводную страницу кампании ("/ CampaignSummary")

Полагаю, в этом случае мне следует вызвать метод контроллера, который будет обрабатывать все, что мне нужно, но я не понимаю, как это сделать напрямую из javascript.

Я попробовал следующий подход, который не работал для меня: обработайте событие onchange в javascript и выполните там следующий код:

var selectedId = $("#CurrentCampaignDropdown").val();
$.get("/CampaignSummary", {currentCampaignId: selectedId});

1 Ответ

0 голосов
/ 15 июня 2019

Наконец, я смог найти решение своей проблемы.

В конце концов, мне даже не нужен код javascript вообще, кроме одной строки.Вот пример моего кода:

_Layout.cshtml код:

@await Component.InvokeAsync($"{ViewComponentName}", /* parameters for view component */)

ViewComponent .cshtml код:

@using (Html.BeginForm("ConrollerMethodName", "ControllerName", FormMethod.Post))
{
    @Html.DropDownList("CurrentCampaignId", new SelectList(/* parameters */), new {onchange = "this.form.submit()"})
}

Контроллер код:

public IActionResult ControllerMethodName(int currentCampaignId) //The name of the parameter should be the same as the first parameter in DropDownList method. Otherwise, it will be null.
{
    //Save your data

    RedirectToAction(nameof(ActionYouNeed));
}

Надеюсь, это кому-нибудь поможет.

Спасибо Крису Пратту и Авину Кавишу за то, что они привели меня в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...