Получить значение Html.DropDownList - PullRequest
1 голос
/ 08 марта 2019

В настоящее время у меня есть следующий код в одном из моих представлений Razor в проекте MVC: <b>Item Code: </b>@Html.DropDownList("ItemID", (SelectList)ViewBag.Items)

Я хотел бы получить доступ к значению раскрывающегося списка позже в @Ajax.ActionLink в RazorПосмотреть.Есть ли способ получить доступ к значению выпадающего списка в представлении ?

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Если у вас нет специальной библиотеки (например, jQuery) для работы с вашими элементами DOM, вы можете использовать vanilla Javascript, как показано в следующем примере:

//get the element by its ID value    
var dropdownElement = document.getElementById("ddlItems");

// now we have a reference to the dropdown field, let's read the selected value (or text):    
// 1- selected value
var selectedValue = dropdownElement.options[dropdownElement.selectedIndex].value;

// 2- selected text
var selectedText = dropdownElement.options[dropdownElement.selectedIndex].text;

// display a popup with selected text and value
window.alert("selected value is: (" + selectedValue + "), and selected text is: (" + selectedText + ").");
<select id="ddlItems">
  <option value="1">1st item</option>
  <option value="2">2nd item</option>
  <option value="3" selected="selected">3rd item</option>
</select>
0 голосов
/ 10 марта 2019

Если я правильно понимаю вашу проблему, вы пытаетесь передать выбранное значение из DropDownList helper в @Ajax.ActionLink helper из представления, что невозможно, поскольку @Ajax.ActionLink helper обрабатывается и обрабатывается на стороне сервера перед отправкой в ​​браузер ,

Вместо этого вы можете использовать помощник @Html.ActionLink без параметра routeValues и установить атрибут id этого тега привязки:

@Html.ActionLink("Get Item", "TargetAction", "TargetController", null, new { id = "link" })

Затем используйте ненавязчивый AJAX для обработки click события этой ссылки и передачи туда выбранного значения из выпадающего элемента:

$('#link').click(function(e) {
    e.preventDefault();

    // get selected value from dropdownlist
    var selected = $('#ItemID').val();

    $.ajax({
        type: 'GET',
        url: this.href,
        data: { id: selected }, // action parameter with selected value
        cache: false, // disable caching
        success: function (result) {
            // do something to target DOM
        }
    });

    return false;
});

Дополнительные примечания:

1) Убедитесь, что параметр (ы), переданный в настройку data, точно соответствует параметру (ам) в целевом действии контроллера, указанном атрибутом href ссылки.

public ActionResult TargetAction(int id)
{
    // do something 
}

2) Вы можете использовать строго типизированную версию DropDownList, т.е. DropDownListFor, чтобы связать свойство viewmodel.

@Html.DropDownListFor(model => model.ItemID, ViewBag.Items as SelectList, ...)
0 голосов
/ 08 марта 2019

Используйте JQuery для получения текущего выбранного значения -

$('#dropDownId').val();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...