Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Иногда может потребоваться функциональная возможность в элементе управления, не предоставляемая встроенными серверными веб-элементами управления ASP.NET. В таких случаях можно создавать собственные элементы управления.
Пользовательские элементы управления — это контейнеры, в которые можно поместить разметку и серверные веб-элементы управления. Пользовательский элемент управления затем можно рассматривать как единое целое и задавать для него свойства и методы.
Пользовательский элемент управления представляет собой небольшую часть страницы, которая может содержать статический HTML-код и стандартные элементы управления. В пользовательских элементах управления можно предусмотреть свои свойства, методы и события. Пользовательские блоки кода могут многократно использоваться на разных страницах, но только одного сайта. Для применения в другом сайте его либо нужно скопировать в этот сайт, либо создавать библиотечные специальные серверные элементы наподобие стандартных (custom server control).
Файл пользовательского элемента управления может содержать то же самое, что и файл обычной исполнимой страницы, включая файл поддержки.cs, статический HTML-код, стандартные элементы управления. Они получают те же самые события, что и объект Page, имеют доступ к таким важным объектам-свойствам, как Application, Session, Request, Response. Но есть и существенные отличия:
В отличие от страниц, файлы которых имеют расширение.aspx, пользовательские элементы управления должны храниться в файлах с расширением.ascx.
Объект страницы произведен от класса Page, а объект пользовательского элемента управления производится от класса UserControl. Но учитывая, что оба класса (Page и UserConrol) наследуют класс TemplateControl, они приобретают много одинаковых свойств и событий от этого класса.
Среда исполнения не может напрямую вызвать файл.ascx, а должна это делать через.aspx, в который внедряется ссылка на файл.ascx
Файл пользовательского элемента управления не является отдельной страницей, поэтому не должен содержать дескрипторы <html>, <head>, <body>, <form>
Вместо директивы @Page файл пользовательского элемента управления содержит директиву @Control
Создание пользовательских элементов управления
Заготовку пользовательского элемента управления легко создает мастер среды проектирования. Необходимо выполнить команду Website/Add New Item и выбрать шаблон Web User Control.
Мастер создаст файл.ascx, который содержит только одну строку директивы
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Header.ascx.cs" Inherits="Header" %>
Пользовательский элемент управления редактируется в оболочке точно также, как и обычная страница. Файл поддержки.ascx.cs содержит тот же код, что и для обычной страницы.
Использование элементов управления
Пример создания пользовательского элемента управления, который будет представлять собой простой верхний колонтитул страницы и состоять из статического HTML-текста.
Код:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Header.ascx.cs" Inherits="Header" %>
<table width="100%" border="0" bgcolor="blue">
<tr>
<td>
<font face="Vernada, Arial" size="6" color="yellow">
<b>Тестовая страница User Control</b>
</font> </td>
</tr>
<tr>
<td align="right">
<font size="3" color="white">
<b>Время создания: март 2007г. © Все права защищены</b>
</font> </td>
</tr>
</table>
Преобразование страниц веб-форм в пользовательские элементы управления ASP.NET
Для преобразования однофайловой веб-страницы ASP.NET в пользовательский элемент управления необходимо:
Переименовать элемент управления таким образом, чтобы файл получил расширение ASCX.
Удалить из страницы элементы html, body и form.
Изменить директиву @ Page на директиву @ Control.
Удалить все атрибуты директивы @ Control, кроме Language, AutoEventWireup (если есть), CodeFile и Inherits.
Включить в директиву @ Control атрибут className. Это позволит обеспечить строгую типизацию пользовательского элемента управления при его добавлении на страницу.
Пример преобразования однофайловой веб-страницы ASP в пользовательский элемент управления.
Странца aspx:
<%@ Page Language="C#" %>
<html>
<script runat=server>
void EnterBtn_Click(Object sender, EventArgs e)
{
Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
}
</script>
<body>
<h3> <u>Web Forms Page</u> </h3>
<form>
Enter Name: <asp:textbox id="Name" runat=server/>
<asp:button Text="Enter" OnClick="EnterBtn_Click"
runat=server/>
<br>
<br>
<asp:label id="Label1" runat=server/>
</form>
</body>
</html>
Пользовательский элемент управления(ascx):
<%@ Control Language="C#" ClassName="SampleUserControl" %>
<h3> <u>User Control</u> </h3>
<script runat=server>
void EnterBtn_Click(Object Sender, EventArgs e)
{
Label1.Text = "Hi " + Name.Text + " welcome to ASP.NET!";
}
</script>
Enter Name: <asp:textbox id="Name" runat=server/>
<asp:button Text="Enter" OnClick="EnterBtn_Click"
runat=server/>
<br>
<br>
<asp:label id="Label1" runat=server/>
Дата публикования: 2015-02-03; Прочитано: 855 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!