Китай |
Управление HTML-элементами в ASP.NET
Визуальный способ проектирования страницы представления
Дойдя до этого места, вам, возможно, уже надоело смотреть на HTML-код. Но оболочка дает возможность применить привычный визуальный способ проектирования дизайна Web-страницы - через панель Toolbox, чем мы в дальнейшем и воспользуемся.
Мы по-прежнему будем добавлять к проекту страницы Web Form, но прежде, чем редактировать ассоциированный файл CodeBehind напрямую, нужно полностью определиться с дизайном страницы, именами и типами элементов. Манипуляции с интерфейсной частью страницы приводят к генерации кода в ассоциированном файле CodeBehind. Но код на C# вставляется в CodeBehind только при объявлении управляющих HTML-элементов серверными. Имена элементов нужно менять в режиме дизайна через панель Properties, в этом случае они автоматически сменятся в CodeBehind.
Упражнение 9. Элемент управления HTMLInputImage
Элемент управления HTMLInputImage позволяет программировать тег <input type="image">. Он обеспечивает загруженный на страницу рисунок функциональными возможностями кнопки типа submit. Для примера создадим страницу, на которой разместим с помощью этого элемента два изображения с функциональностью кнопок. При щелчке по одному из рисунков будем сообщать, какая кнопка была нажата.
-
Добавьте к проекту новую страницу типа Web Form с отделенным кодом и именем HTMLInputImage.aspx
-
Выполните команду меню оболочки View/Other Windows/Document Outline, чтобы вызвать панель Document Outline
Панель Document Outline является удобным средством навигации по элементам управления интерфейсной части страницы. Она отображает дерево дескрипторов страницы и щелчек на любом элементе в панели приводит к установке курсора на открывающий дескриптор соответствующего элемента, а панели Properties отображаются свойства выделенного элемента.
И наоборот, при вызове в режиме Source контекстного меню для курсора, установленного на каком-либо дескрипторе, и выполнении команды Synchronize Document Outline происходит локализация соответствующего узла в панели Document Outline.
-
Перейдите в режим Source-редактирования и подкорректируйте файл HTMLInputImage.aspx так
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="HTMLInputImage.aspx.cs" Inherits="HTMLInputImage" %> <html> <head> <title>Элемент управления HTMLInputImage</title> </head> <body> <center> <h1> Программирование элемента HTMLInputImage</h1> <form id="form1" runat="server" method="post"> <h2 id="Text" runat="server"> </h2> </form> <a href="HTMLInputHidden.aspx">Назад</a> <a href="HTMLInputRadioButton.aspx">Вперед</a> </center> </body> </html>Листинг 3.17. Начальный HTML-код файла HTMLInputImage.aspx
Поместить компоненты на Web-форму можно двумя способами:
- Выполнить двойной щелчок на компоненте и компонент разместится в верхем левом углу Web-формы.
- Захватить компонент мышью и поместить его в нужное место на Web-форме.
-
Оставаясь в режиме Source, выберите в панели Toolbox вкладку HTML и поместите внутрь дескрипторов <form></form> (в самом конце блока) два элемента Image, раздвинув их жесткими пробелами
Блок приобретет примерно такой вид:
<form id="form1" runat="server" method="post"> <h2 id="Text" runat="server"> </h2> <img src="" /> <img src="" /> </form>Листинг 3.18. Блок <form>...</form> после вставки дескрипторов <img>
-
Щелкните правой кнопкой мыши на свободном месте панели инструментов (вверху, после меню) оболочки для вызова контекстного меню (или выполните команду Tools/Customize) и включите панель инструментов Dialog Editor
Этой панелью следует пользоваться для выравнивания компонентов в режиме абсолютного позиционирования компонентов Web-формы, но не в нашем случае.
-
Поместите на страницу ниже завершающего маркера формы </form> компонент Horizontal Rule
-
В режиме Design последовательно вызовите для каждого HTML-компонента Image контекстное меню и выполните в нем команду Run As Server Control
Оболочка добавит к дескрипторам <img> атрибут runat="server". Слева над изображением компонента появится зеленый маркер, свидетельствующий, что компонент является программируемым на стороне сервера.
После этих манипуляций внешнее представление Web-страницы в режиме Design должно выглядеть так
-
Заготовьте два небольших рисунка одинакового размера для этих кнопок (можно взять в каталоге Source данной работы) и разместите их файлы под именами Button1.png и Button2.png в папке Images проекта
-
Через панель Document Outline выделите последовательно компоненты рисунков и в панели Properties через диалоговое окно подключите к свойству Src (Source-источник) соответствующие рисунки
После подключения рисунков к HTML-элементам <img> визуальное представление страницы на этапе проектирования станет таким
-
Перейдите в режим Source и измените дескрипторы <img> на <input type="image">
Окончательно строки HTML-кода отображения рисунков-кнопок должны выглядеть так
<input type="image" id="IMG1" src="Images/Button1.png" runat="server" /> <input type="image" id="IMG2" src="Images/Button2.png" runat="server" />Листинг 3.19. Окончательный вариант HTML-кода рисунков-кнопок
Будем считать, что с дизайном страницы мы закончили и построили ее интерфейсную часть. Теперь приступим к программированию этого дизайна на языке C#.
-
Через меню View (команда Code) или контекстное меню Web-формы (команда View Code ) откройте на редактирование ассоциированный файл (CodeBehind) с именем HTMLInputImage.aspx.cs
-
Перейдите на страницу HTMLInputImage.aspx в режим Design и двойным щелчком на каждой кнопке-рисунке создайте обработчики в ассоциированном файле
-
Отредактируйте обработчики так
protected void IMG1_ServerClick(object sender, ImageClickEventArgs e) { Text.InnerHtml = "<font color=red>" + "Вы щелкнули по левой кнопке! </font>"; } protected void IMG2_ServerClick(object sender, ImageClickEventArgs e) { Text.InnerHtml = "<font color=#0000ff>" + "Вы щелкнули по правой кнопке! </font>"; }Листинг 3.20. Обработчики для кнопок-рисунков в HTMLInputImage.aspx.cs
-
Назначьте страницу HTMLInputImage.aspx стартовой, постройте приложение и убедитесь в его работоспособности
Страница внешне должна выглядет так