Передать выбранное значение в раскрывающемся списке как метод действия - PullRequest
1 голос
/ 05 мая 2020

У меня есть раскрывающиеся варианты программ2019, программы2020, и когда пользователь выбирает программы2019, он вызывает в контроллере метод действий Programs2019. Я попытался использовать jquery и передать selectedvalue в @ Url.Action () безуспешно. Я прочитал сообщение, в котором говорится: «@ Url.Action - это серверный код, который выполняется перед выполнением любого из кода JavaScript. Таким образом, вы не можете ссылаться на переменные JS в этом вызове @ Url.Action ()». . Как тогда передать selectedvalue в call action? Мой код, как показано ниже:

 <span id="Label1">Select a program year</span> &nbsp;


        @Html.DropDownList("year", new List<SelectListItem>
{
new SelectListItem { Text = "2019", Value = "Programs2019"},
new SelectListItem { Text = "2020", Value = "Programs2020"}

}, "Select a year", htmlAttributes: new { style = "width: 300px;" })

и jquery:

<script  type="text/javascript">
$(document).ready(function () {

  $("#year").change(function () {
     var SelectedYr = $('#year').val();
    $.ajax({
        type: 'POST',
        url: '@Url.Action(SelectedYr)',
        dataType: 'json',
        data: { year: SelectedYr },
        success: function (result) {
        }

    });
});
});

контроллер:

 public ActionResult Programs2019()
    {
      ...
    }
   public ActionResult Programs2020()
    {
      ...
    }

1 Ответ

2 голосов
/ 05 мая 2020

Я думаю, что есть несколько решений этой проблемы.

Вот два самых простых способа:

Вы можете использовать необработанную строку в ajax вместо @Url.Action, затем используйте некоторые хитрые javascript строковые конкатенации на нем.

$.ajax({
    type: 'POST',
    url: `/YourControllerName/Programs${SelectedYr}`,
    success: function (result) {}
});

Или вы можете сделать это таким образом

Объедините действия на своем контроллере и используйте выбранный год для разделения функций

Контроллер

public ActionResult ProgramSelect(int year)
{
    if(year == 2019) {...}
    ...
}

Ajax

$.ajax({
    type: 'POST',
    url: '@Url.Action("ProgramSelect", "YourControllerName")',
    data: { year: SelectedYr}
    success: function (result) {}
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...