Элементы-списки

Для генерации списков используются два метода Html.DropDownList() и Html.ListBox(), генерирующие разметку для элементов: управления "выпадающий список" и "список" соответственно. Оба этих вспомогательных метода принимают в качестве параметра коллекцию SelectList.

<%= Html.DropDownList("lstName",

  new SelectList( new[] {"John", "Paul", "George", "Rringo"} )) %>

В результате создается разметка, содержащая теги <option>.

<select id="lstName" name="lstName">

  <option>John</option>

  <option>Paul</option>

  <option>George</option>

  <option>Rringo</option>

</select>

Для обеспечения возможности выбора нескольких элементов в списках, генерируемых методом ListBox, в качестве параметра следует передать коллекцию MultiSelectList.

<%= Html.ListBox("lstName",

  new MultiSelectList( new[] {"John", "Paul", "George", "Rringo"} )) %>

Тогда будет определено свойство multiple тега <select>.

<select id="lstName" multiple="multiple" name="lstName">

  <option>John</option>

  <option>Paul</option>

  <option>George</option>

  <option>Rringo</option>

</select>

Разумеется, в реальных приложениях не всегда удобно создавать отдельно список для элементов форм и хотелось бы использовать коллекцию бизнесобъектов, применяемых в логике приложения. Для этого может быть использован конструктор коллекции SelectList.

SelectList(коллекция объектов,

  название поля объекта,  содержащее значение,

  название поля объекта, содержащее текст,

  выбранное значение

)

Например, в нашем приложении используются объекты типа Person, определение которых представлено далее.

public class Person {

  public int Id { get; set; }

  public string Name { get; set; }

}

Тогда в методе контроллера для сохранения в коллекцию ViewData коллекцию элементов списка можно передать, используя конструктор SelectList так, как показано далее.

public ActionResult About()

{

  List<Person> lst = new List<Person>

  {

    new Person { Id = 1, Name = "John"},

    new Person { Id = 2, Name = "Paul"},

    new Person { Id = 3, Name = "George"},

    new Person { Id = 4, Name = "Ringo"}

  };

  ViewData["lstName"] = new SelectList(lst, "Id", "Name", 2);

  return View () ;

}

В результате будет создана HTML-разметка, приведенная далее.

<select id="lstName" multiple="multiple" name="lstName">

  <option value="1">John</option>

  <option selected="selected" value="2">Paul</option>

  <option value="3">George</option>

  <option value="4">Ringo</option>

</select>

Таким образом, коллекция бизнес-объектов может быть использована для заполнения списков необходимыми данными.

Более 800 000 книг и аудиокниг! 📚

Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением

ПОЛУЧИТЬ ПОДАРОК