Написание серверных элементов управления
Последняя тема, которой мы немного коснемся - это создание собственных серверных элементов управления. Такие элементы обладают гораздо более широкими возможностями по сравнению с пользовательскими элементами управления. Так они могут более гибко встраиваться в среду разработки, у них шире потенциальные возможности (в частности использование шаблонов).
Серверные элементы наследуются напрямую от System.Web.UI.Control и осуществляет вывод своего кода не с помощью .ascs-шаблона, а напрямую при вызова метода Render.
Мы не будем подробно рассматривать написание серверных контролов - эта тема очень обширная, лишь покажем небольшой пример: контрол, который просто выводит указанный текст
CustomLabel.cs
using System; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel;
namespace ru.spb.dotSITE.Portal.Tutorials.ASP.NET.Writing_custom_controls.Simple_Server_Control { /// /// Summary description for CustomLabel. /// [DefaultProperty("Text"), ToolboxData("<{0}:CustomLabel runat=server></{0}:CustomLabel>")] public class CustomLabel : System.Web.UI.WebControls.WebControl { private string text;
[Bindable(true), Category("Appearance"), DefaultValue("")] public string Text { get { return text; }
set { text = value; } }
/// /// Render this control to the output parameter specified. /// /// The HTML writer to write out to protected override void Render(HtmlTextWriter output) { output.Write(Text); } } }
|
Default.aspx
<%@ Page language="c#" Codebehind="Default.aspx.cs" AutoEventWireup="false" Inherits="ru.spb.dotSITE.Portal.Tutorials.ASP.NET.Writing_custom_controls.Simple_Server_Control._Default" %> <%@ Register TagPrefix="cc1" Namespace="ru.spb.dotSITE.Portal.Tutorials.ASP.NET.Writing_custom_controls.Simple_Server_Control" Assembly="ru.spb.dotSITE.Portal" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>Default</title> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body MS_POSITIONING="GridLayout"> <form id="Default" method="post" runat="server"> <cc1:CustomLabel id="CustomLabel1" style="Z-INDEX: 101; LEFT: 40px; POSITION: absolute; TOP: 47px" runat="server" Width="297px" Text="Hello, world!"></cc1:CustomLabel> </form> </body> </HTML> |
назад