Как получить значение выпадающего списка и передать его в контроллер через ActionLink? - PullRequest
0 голосов
/ 28 августа 2018

Мне нужно отправить значение раскрывающегося списка на мой контроллер с помощью Actionlink.

Я использую этот код:

отправка списка для просмотра с контроллера:

ViewBag.Frecuencies = new SelectList(db.Frecuencies, "FrecuencyID", "Description");

показать список в представлении:

 @Html.DropDownList("Description", (IEnumerable<SelectListItem>) ViewBag.Frecuencies,new { name="Frecuency"})

и я хочу отправить значение из раскрывающегося списка с ActionLink в качестве параметра:

@ActionLink("ActionName","Controller",new {**ParameterName=DropdownValue**})

какая-то помощь?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Предположим, у вас есть эта настройка:

@Html.DropDownList("Description", (IEnumerable<SelectListItem>)ViewBag.Frequencies, new { id = "Frequency" })

@Html.ActionLink("Link Text", "ActionName", "ControllerName", null, new { id = "Link" })

Затем вы можете манипулировать атрибутом href ссылки со строкой запроса:

$('#Frequency').change(function () {
    var ddlValue = $(this).val();
    var url = $('#Link').attr('href');

    $('#Link').attr('href', url + '?ParameterName=' + ddlValue);
});

Если ссылка уже имеет значение параметра, подобное этому:

@Html.ActionLink("Link Text", "ActionName", "ControllerName", new { ParameterName = "OtherValue" }, new { id = "Link" })

Затем вы можете заменить значение параметра следующим образом:

$('#Frequency').change(function () {
    var ddlValue = $(this).val();

    $('#Link').attr('href', function () {
        return this.href.replace("OtherValue", ddlValue);
    });
});

Обратите внимание, что значение параметра, поставляемое с ActionLink, обрабатывается на стороне сервера, что создает тег привязки с атрибутом href, содержащим URL-адрес с именем контроллера, именем действия и параметрами строки запроса, как в примере ниже:

<a id="Link" href="/ControllerName/ActionName?ParameterName=[DDLValue]">Link Text</a>
0 голосов
/ 28 августа 2018

Я не думаю, что вы можете сделать это без использования JavaScript. Вы должны получить выбранное значение из списка, а затем добавить его в тег <a>, сгенерированный @Html.ActionLink().

Сначала я бы добавил несколько идентификаторов к этим Html вспомогательным методам.

@Html.DropDownList("Description", (IEnumerable<SelectListItem>)ViewBag.Frecuencies, new { name = "Frecuency", id = "Frecuency-id" })

@Html.ActionLink("ActionName", "Controller", new { paramName="", id="action-link-id"})

Затем вы переходите к JavaScript. Вот как вы могли бы сделать это, используя jQuery:

var selectedValue = $("#Frecuency-id").val();

$("#action-link-id").attr("paramName", selectedValue);

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

var valueList = $("#Frecuency-id");

    valueList.on("change", function () {
        var selectedValue = $("#Frecuency-id").val();

        $("#action-link-id").attr("paramName", selectedValue);
    });

Код должен выглядеть примерно так, как я описал выше.

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