UR.ANUS
Asp.net mvc framework
вернуться

Магдануров Гайдар Ильдарович

Шрифт:

<input checked="checked" id="myCheckBox" name="myCheckBox"

type="checkbox" value="true" />

<input name="myCheckBox" type="hidden" value="false" />

Стоит отметить, каким образом присваиваются значения элементам управления. При генерации разметки для элемента управления myTextBox механизм представления сначала проверит наличие значения в коллекции ViewData.ModelState для элемента с именем myTextBox: ViewData.ModelState["myTextBox"].Value.RawValue, затем будет использовано значение, переданное в качестве параметра вспомогательному методу. В случае если вспомогательному методу не было передано параметров, то будет осуществлена попытка найти значение в коллекции ViewData: ViewData.Eval("myTextBox"). Подробнее о коллекции ModelState рассказано в разделе, посвященном проверке значений элементов управления.

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

Для генерации списков используются два метода 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>

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

Индикаторы корректности введенных данных

Пользователям свойственно ошибаться при вводе данных, и приложению необходимо уведомлять пользователя о допущенных ошибках и конкретных полях формы, которые заполнены некорректно. Для этого существуют два вспомогательных метода: Html.validationMessage, который выводит сообщение, относящееся к определенному полю на форме, и Html.validationSummary , который выводит общую информацию по ошибкам, допущенным при заполнении формы.

Работа этих вспомогательных методов основана на коллекции ModelState, которая упоминалась ранее. В этой коллекции на этапе проверки корректности данных сохраняется информация об ошибках, связанных с конкретными полями формы. Пример действия контроллера, выполняющего проверку корректности введенных данных (валидацию), приведен в листинге 5.7.

  • Читать дальше
  • 1
  • ...
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • ...

UR.ANUS - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • support@anus.bid