Написание серверных элементов управления

Последняя тема, которой мы немного коснемся - это создание собственных серверных элементов управления. Такие элементы обладают гораздо более широкими возможностями по сравнению с пользовательскими элементами управления. Так они могут более гибко встраиваться в среду разработки, у них шире потенциальные возможности (в частности использование шаблонов).

Серверные элементы наследуются напрямую от 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>


назад