Основы ASP.NET 2.0



         

Пользовательские элементы управления - часть 5


Только что созданный элемент управления можно даже добавить в панель инструментов, и перетаскивать оттуда на любую страницу. Но директиву Register придется добавлять самим.

Можно попробовать создать WebUserControl в событии Page_Load, но это не даст результата. Причина в том, что класс объявлен лишь частично в файле отделенного кода, в нем не хватает функции отрисовки, которая появится при обработке страницы ascx ASP .NET.

Чтобы программно создать экземпляр пользовательского элемента управления, нужно вызвать функцию LoadControl, который вернет экземпляр класса System.Web.UI.Control, содержащий загружаемый элемент управления. Чтобы иметь доступ к свойствам класса WebUserControl, нужно преобразование типа. И, как и всякий другой элемент управления, загруженный пользовательский элемент управления может быть добавлен в коллекцию элементов управления web-формы. Его нельзя добавить в страницу, так как его составной частью является кнопка, которая может находиться только в форме:

WebUserControl wuc = (WebUserControl)Page.LoadControl("WebUserControl.ascx"); wuc.Greeting = "Здоровеньки булы"; wuc.Name = "Тарас"; form1.Controls.AddAt(0, wuc);

Более полезный пользовательский элемент управления — нижний колонтитул любой страницы. Его можно поместить на шаблон дизайна. Он может отобразить юридическую информацию, адрес web-мастера и дату последнего обновления:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Footerl.ascx.cs" Inherits="Footerl" %> Copyright &copy; <asp:Label ID="lblYear" runat="server" /> by Your Company Name.<br />

Замечания, комментарии, проблемы? Свяжитесь с web-мастером <asp:Label ID="lblEmail" runat="server" /><br /> Дата последней модификации этой страницы: <asp:Label ID="lblLastMod" runat="server" /><br />

Текст в элементах Label меняется в обработчике Page_Load.

protected void Page_Load(object sender, EventArgs e) { lblYear.Text = DateTime.Now.Year.ToString(); lblEmail.Text = "<a href='mailto:webmaster@" + Request.Url.Host.Replace("www.", "") + "'>webmaster</a>"; lblLastMod.Text = System.IO.File.GetLastWriteTime(Server.MapPath(Request.Url.LocalPa th)).ToLongDateString(); }




Содержание  Назад  Вперед