получить текст списка выбора

#asp.net #asp.net-mvc

#asp.net #asp.net-mvc

Вопрос:

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

Комментарии:

1. Не могли бы вы уточнить свой вопрос, пожалуйста..

Ответ №1:

Вот один из способов:

 $(function() {
    $('select').change(function() {
        alert($('select option:selected').text());    
    });   

});

<select>
    <option value="0">Zero</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
</select>
  

Рабочий jsfiddle:http://jsfiddle.net/wherC /

Если у вас на странице есть несколько элементов выбора, вам нужно соответствующим образом изменить селектор.

Ответ №2:

Значение выбранного option — это то, что будет передано в качестве ключа формы списка выбора.

Пример

 <select name="list1">
    <option selected value="1">one</option>
</select>
  

создаст ключ list1=1

Если вам нужно описание, привяжите описание к значению списка выбора.

 <select name="list1">
    <option selected value="one">one</option>
</select>
  

создаст ключ list1=one

Если вы используете SelectListItem этот параметр будет:

 new SelectListItem {
    Text = "one", 
    Value = "one" 
}
  

Ответ №3:

Не уверен, понял ли я ваш вопрос, но :

Предполагая, что наша коллекция, которую мы хотим использовать для заполнения нашего выпадающего списка, состоит из :

 public class Animal
{
    public int ID { get; set; }
    public string Name { get; set; }
}
  

Тогда вы можете заполнить свой список следующим образом

  @Html.DropDownListFor(model => model.AnimalId, new SelectList(AnimalList, "ID", "Name"))
  

Для примера выше ID — это «Значение», и имя будет отображаться в качестве опции для выбора. Если вы хотите, чтобы было наоборот — просто замените имена свойств / полей класса

Если вы хотите, чтобы в выпадающем списке отображались как идентификатор, так и имя, чтобы создать

 <option value="1">1 - Horse</option>
  

Я бы выбрал

 @Html.EditorFor(model => model.id, "PickAnimalTemplate", new { animals = ViewBag.Animals})
  

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

 @foreach (var item in animals)
{
    <option value="@item.ID">@item.ID - @item.Name</option>
}