Книга: ASP.NET MVC Framework

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

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

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

<%= Html.DropDownList("lstName",
  new SelectList( new[] {"John", "Paul", "George", "Rringo"} )) %>

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

<select 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 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 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>

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

Оглавление книги


Генерация: 0.637. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз