Чтение онлайн

на главную - закладки

Жанры

Шрифт:

new { action = "hello", id = 1 });

В результате будет создана следующая ссылка, при условии, что маршрут SomeRoute определен как mycontroller/{action}/sometext/{id}.

<a href="#">Сcылка</a>

Элементы управления HTML-страницы

Большая часть вспомогательных методов, приведенных в табл. 5.1, связаны с созданием HTML-разметки для элементов ввода данных HTML-форм. В этой части главы мы рассмотрим их применение.

HTML-форма

Для

того чтобы данные, введенные пользователем в элементы управления, были корректно отправлены на сервер и обработаны ожидающим этих данных действием контроллера, необходимо создать тег <form>, для этого существует вспомогательный метод Html.BeginForm(действие контроллера, имя контроллера). Если при вызове метода не указаны параметры, атрибут action тега <form> будет заполнен текущим URL.

<% using(Html.BeginForm("About", "Home")){ %>

<% } %>

В примере используется синтаксис using{}. Дело в том, что метод Html.BeginForm возвращает объект, реализующий интерфейс IDisposable. Метод Dispose этого объекта определен таким образом, чтобы выводить закрывающий тег формы </form>. Вместо синтаксиса using{} можно воспользоваться вспомогательным методом Html. EndForm.

<% Html.BeginForm("About", "Home"); %>

<% Html.EndForm ; %>

Синтаксис using{} удобнее при наличии нескольких независимых форм на странице — в этом случае формы будут выглядеть визуально обособленно.

При отображении представления будет создана соответствующая разметка для тега <form>.

<form action="/Home/About" method="post">

</form>

В случае необходимости задать дополнительные параметры URL, по которому будут отправлены данные формы, необходимо передать анонимный объект, свойства которого будут преобразованы в пары ключ-значение. Для определения метода отправки формы, в качестве параметра нужно передать значение перечислимого FormMethod.

<% using (Html.BeginForm("About", "Home",

new { hello = "world", answer = 42 }, FormMethod.Get )) { %>

<% } %>

Эти параметры будут использованы при генерации тега <form>.

<form action="/Home/About?hello=world&answer=42" method="get">

</form>

Текстовые поля, скрытые поля и кнопки

Вспомогательные методы для генерации текстовых полей, скрытых полей и кнопок работают по общему принципу — первым параметром передается идентификатор, который будет использован для создаваемого HTML-элемента и на основании которого сопоставляется значение элемента управления и создается пара ключ-значение при отправке данных

формы на сервер.

<%= Html.TextArea("myText", "Hello world!") %>

В отличие от метода Html.BeginForm, выводящего строковые значения непосредственно в выходной буфер ответа пользователю, вспомогательные методы элементов управления возвращают строку, поэтому для них нужно использовать синтаксис <%= %>. Тогда в разметку страницы будет выведена соответствующая строка.

<textarea cols="20" id="myText" name="myText" rows="2">

la-la-la-la-la-la-la</textarea>

Для создания дополнительных атрибутов вспомогательным методам необходимо передать анонимный объект.

<%= Html.TextBox("myTextBox", "", new { style="color: yellow;",

@class="helloWorld" })%>

Поскольку в качестве имени свойства анонимного объекта нельзя использовать зарезервированные ключевые слова языка C#, то перед такими именами свойств нужно добавить символ @. В результирующий вывод свойство @class войдет как class, без символа @.

<input class="helloWorld" id="myTextBox"

name="myTextBox" style="color: yellow;" type="text" value="" />

Особым случаем является вспомогательный метод Html.CheckBox, поскольку он создает два HTML-элемента управления. Непосредственно элемент "флажок" и "скрытое поле".

<%= Html.CheckBox("myCheckBox", true) %>

Поскольку в случае если элемент управления не будет отмечен пользователем, то его значение на сервер не передается, поэтому необходимо использование скрытого поля.

<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"} )) %>

Поделиться:
Популярные книги

Виктимология. Психология поведения жертвы

Малкина-Пых Ирина Германовна
Научно-образовательная:
психология
5.75
рейтинг книги
Виктимология. Психология поведения жертвы

Медная шкатулка (сборник)

Рубина Дина Ильинична
Проза:
современная проза
7.50
рейтинг книги
Медная шкатулка (сборник)

Колдун из Салема

Хольбайн Вольфганг
1. Салемский колдун
Фантастика:
фэнтези
ужасы и мистика
8.00
рейтинг книги
Колдун из Салема

Системный разведчик. Инфильтрация. Дилогия

Юрич Валерий
Системный разведчик
Фантастика:
боевая фантастика
рпг
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Системный разведчик. Инфильтрация. Дилогия

Гэбриель Конрой (сборник)

Гарт Фрэнсис Брет
Библиотека приключений продолжается…
Приключения:
прочие приключения
6.25
рейтинг книги
Гэбриель Конрой (сборник)

Том 5. Рассказы 1860 ? 1880 гг.

Ожешко Элиза
Проза:
классическая проза
5.00
рейтинг книги
Том 5. Рассказы 1860 ? 1880 гг.

Сборник.Том 2

Азимов Айзек
2. Отцы-основатели. Весь Азимов
Фантастика:
научная фантастика
5.00
рейтинг книги
Сборник.Том 2

Американский таблоид

Эллрой Джеймс
Детективы:
крутой детектив
7.17
рейтинг книги
Американский таблоид

Цикл "Пограничная трилогия"+Романы вне цикла. Компиляция. 1-5

Маккарти Кормак
Приключения:
вестерны
5.00
рейтинг книги
Цикл Пограничная трилогия+Романы вне цикла. Компиляция. 1-5

"Фантастика 2025-76". Компиляция. Книги 1-35

Стоев Андрей
Фантастика 2025. Компиляция
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Фантастика 2025-76. Компиляция. Книги 1-35

Суворов и Кутузов (сборник)

Раковский Леонтий Иосифович
Лица. Эпизоды. Факты
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Суворов и Кутузов (сборник)

Неудачник в школе магии т.1-4

Агафонов Антон Романович
Хроника Красной Кометы
Фантастика:
фэнтези
5.00
рейтинг книги
Неудачник в школе магии т.1-4

Том 2. Рассказы 1889-1903

Короленко Владимир Галактионович
2. Собрание сочинений в пяти томах
Проза:
русская классическая проза
5.00
рейтинг книги
Том 2. Рассказы 1889-1903

«О» - значит омут

Графтон Сью
Кинси Милхоун
Детективы:
крутой детектив
5.00
рейтинг книги
«О» - значит омут