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