Опубликован: 14.11.2006 | Доступ: свободный | Студентов: 5902 / 538 | Оценка: 4.18 / 3.74 | Длительность: 16:37:00
ISBN: 978-5-9556-0085-7
Лекция 3:

Серверные элементы управления

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >

Label

Этот элемент управления позволяет выводить отформатированный текст, аналогично обобщенному строчному элементу разметки <SPAN>. Всеми свойствами этого объекта можно управлять из вашей программы ASP .NET.

Большинство методов и свойств унаследовано от WebControl. Главное собственное свойство — это, конечно, его содержание — Text.

Нижеперечисленные свойства управляют внешним видом элемента, присутствуют в классе WebControl и, следовательно, применимы ко всем элементам-наследникам WebControl, а не только к Label.

BackColor Цвет фона
BorderColor Цвет границы элемента управления
BorderStyle Стиль границы — сплошной, пунктир, точечный, двойной и другие
BorderWidth Ширина границы
Enabled Активность. Если false, нельзя вводить данные, не получает фокус
Font Шрифт, состоит из нескольких атрибутов
ForeColor Цвет, которым отображается текст
Height Высота элемента
Width Ширина элемента
Visible Виден ли элемент управления
TabIndex Индекс табуляции, в порядке номеров которых в форме перемещается фокус при нажатии на клавишу Tab
ToolTip Текст окна подсказки

В версии 2.0 появилась возможность задавать для элементов управления "горячие" клавиши, или клавиши быстрого доступа. Свойство AccessKey определяет последовательность нажатых клавиш, которые приводят к установке фокуса на данном элементе. Например, AccessKey="N" значит, что для вызова функциональности надо нажать на Alt+N. Установить фокус в Label невозможно, поэтому устанавливаем свойство AssociatedControlId, которое указывает на другой элемент. Если это TextBox, то фокус устанавливается в него.

Пример описания элемента Label:

<asp:Label id="ShopNews" runat="server" Font-Size =20 
ForeColor="red"
 BackColor ="lightgray" BorderWidth=4 BorderStyle=groove Height=50 
width=500>
Новости торговой площадки </asp:Label>

Префикс asp: означает, что данный элемент стандартный. Можно создавать собственные контролы со своими префиксами (см. "Пользовательские и собственные серверные элементы управления" ).

Текст между открывающим и закрывающим тегами будет показан на странице. Это содержание его свойства Text.

Так как Text — это такой же атрибут, как и другие, мы можем написать иначе:

<asp:Label id="ShopNews" runat="server" Font-Size =20 
ForeColor="red"
 BackColor ="lightgray" BorderWidth=4 BorderStyle=groove Height=50 
width=500
 Text= "Новости торговой площадки" />

Вставим это описание в страницу aspx

<html xmlns=""http://www.w3.org/1999/xhtml"">
<head>
  <title>Торговая площадка</title>
</head>
<body>
  <center>
    <h2>
      Демонстрация метки</h2>
    <br />
    <form id="frmDemo" runat="server">
      <asp:Label ID="ShopNews" runat="server" Font-Size="20" 
ForeColor="red" BackColor="lightgray"
        BorderWidth="4" BorderStyle="groove" Height="50" 
Width="500" Text="Новости торговой площадки" />
    </form>
  </center>
</body>
</html>

и наслаждаемся эффектом. Надпись красного цвета на сером фоне. Стиль границы делает метку приподнятой над фоном.


Рис. 3.1.

У Label, как и у всех остальных классов, есть конструктор. Это значит, что создать его можно прямо в программе, а не прописывать на форме.

<%@ Page Language="C#" %>
<%@ Import Namespace= "System.Drawing" %>

<script runat="server">

    void Page_Load()
    {
         Label ShopNews = new Label();
         ShopNews.Text = "Новости торговой площадки";
         ShopNews.Font.Size=20;
         ShopNews.ForeColor=Color.Red;
         ShopNews.BackColor=Color.LightGray;
         ShopNews.BorderWidth=4;
         ShopNews.BorderStyle=BorderStyle.Groove;
         ShopNews.Height=50;
         ShopNews.Width=500;

         frmDemo.Controls.Add(ShopNews);
    }

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Торговая площадка</title>
</head>
<body>
<center>
<h2>Демонстрация метки</h2><br />
<form id="frmDemo" runat="server">

</form>
</center>
</body>
</html>

Обратите внимание на директиву <%@ Import Namespace= "System.Drawing" %>. Директива импорта нужна, чтобы обращаться к перечислению Color названий цветов, определенному в System.Drawing.

Посмотрим, что выдал ASP .NET браузеру. Вот код HTML, относящийся к нашей метке:

<form name="frmDemo" method="post" action="shop.aspx" 
id="frmDemo">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 
value="/wEPDwULLTEzODAzNzU2NDZkZH95eciStELThSpcgXVWEFYeQxpR" />
</div>
<span id="ShopNews" style="display:inline-block;color:Red;back-
ground-color:LightGrey;border-width:4px;border-style:Groove;font-
size:20pt;height:50px;width:500px;">Новости торговой площадки</span>
</form>

Как видим, ASP .NET превратил метку в элемент разметки <span>, задав ему стили CSS. В форме появился еще один невидимый элемент по имени =__VIEWSTATE, который мы скоро обсудим.

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >
Алексей Савельев
Алексей Савельев

https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx

Денис Прокофьев
Денис Прокофьев

Везде написано, что это самый независимый и простой в использовании навигационный элемент управления, что он работает сразу с web.sitemap и не требует определения SiteMapDataSource.

Моя карта сайта состоит из двух страниц, вложенных друг в друга. asp:Menu, asp:TreeView отбображаются как ожидалось, а вот asp:SiteMapPath - нет. Он не виден нигде. Однако на его месте формируется разметка: <span id="SiteMapPath1"><a href="#SiteMapPath1_SkipLink" style="position:absolute;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden;">Проход по ссылкам навигации</a><a id="SiteMapPath1_SkipLink"></a></span> - т.е. элемент отрабатывает.

В словах xHTML это выглядит так: <asp:SiteMapPath ID="SiteMapPath1" runat="server" />. Причем не важно - внутри тега form или снаружи - всегда одинаково.

Т.к. другие нав. ЭУ работают через простой источник данных без ошибок, делаю вывод - карта составлена правильно. ИД: <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

Карта: <?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="~/L11_1_simplePage.aspx" title="Страница 1"  description="Простая страница 1." >
    <siteMapNode url="~/L11_1SimplePage2.aspx" title="Страница 2"  description="Простая страница 2" />
  </siteMapNode>
</siteMap>

Почему так происходит? Вроде делаю все по примерам. VS Community 2015. NetFramework в проекте: v4.0.30319