Поделиться через


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

Обновлен: Ноябрь 2007

Синтаксис настраиваемых серверных элементов управления используется для объявления пользовательских и настраиваемых серверных элементов управления в виде элементов разметки в файлах приложения ASP.NET, включая веб-страницы, пользовательские элементы управления и главные страницы. Этот синтаксис почти идентичен синтаксису объявления всех серверных элементов управления ASP.NET за исключением того, что для настраиваемых и пользовательских элементов управления обычно объявляется уникальный префикс тега и имя тега, соответствующего элементу управления.

<tagprefix:tagname id="OptionalID"
   attributename="value"
   eventname="eventhandlermethod"
   runat="server" />
OR
<tagprefix:tagname id="OptionalID"
   runat="server" />

Атрибуты

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

  • tagname
    Для настраиваемого элемента управления tagname — это имя типа, для которого в ASP.NET создается экземпляр времени выполнения. Для пользовательского элемента управления tagname соответствует связанному исходному файлу с определением пользовательского элемента управления, а в этом файле, в свою очередь, определяется тип, для которого в ASP.NET создается экземпляр.

  • id
    Уникальный идентификатор, позволяющий программно ссылаться на элемент управления.

  • attributename
    Имя атрибута, соответствующего свойству элемента управления.

  • value
    Значение, назначенное атрибуту (свойству).

  • eventname
    Имя события в элементе управления.

  • eventhandlermethod
    Имя обработчика событий, определенного для обработки указанного события в элементе управления.

Заметки

Синтаксис настраиваемых серверных элементов управления используется для объявления пользовательских и настраиваемых серверных элементов управления внутри веб-страницы ASP.NET. Чтобы этот синтаксис работал, элемент управления должен быть зарегистрирован на странице или в файле конфигурации (элемент управления можно зарегистрировать на всех страницах приложения, добавив его в элемент <controls> файла Web.config). Элемент управления можно зарегистрировать на отдельной странице с помощью директивы @ Register.

Открывающий тег элемента для настраиваемого или пользовательского элемента управления должен содержать пару атрибут/значение runat="server". Если требуется ссылаться на элемент управления программно, то можно задать уникальное значение атрибута id.

Любые свойства, созданные для настраиваемого или пользовательского серверного элемента управления, могут указываться декларативно в открывающем теге серверного элемента управления. Для этого нужно просто объявить свойство как атрибут и присвоить ему значение. Например, если создать настраиваемый элемент управления на основе текстового поля со свойством width, то указав в открывающем теге width="50" , можно задать отображаемую ширину элемента, равную 50 точкам.

В некоторых случаях атрибуты могут быть объектами с собственными свойствами. Тогда в объявление следует включить имя свойства. Например, если создается настраиваемый элемент управления на основе текстового поля с атрибутом font, то он может включать свойство name. В этом случае свойство можно определить в открывающем теге серверного элемента управления как font-name="Arial". Дополнительные сведения о создании настраиваемых серверных элементов управления со свойствами см. в разделе Простые свойство и вложенные свойства серверного элемента управления.

Для специализированных серверных элементов управления и пользовательских элементов управления можно определить события тем же способом, что и для любых серверных элементов управления ASP.NET. Для этого в открывающем теге серверного элемента управления укажите связь с событием с помощью атрибута и значения. Подробную информацию о разработке поддерживающих события специализированных серверных элементов управления см. в разделе Обработка событий сервера на страницах ASP.NET.

Можно использовать и разрабатывать настраиваемые серверные элементы управления, поддерживающие встроенные шаблоны. Сведения об объявлении шаблонов в настраиваемых серверных элементах управления см. в разделе Синтаксис встроенного шаблона серверных элементов управления. Сведения о разработке настраиваемых серверных элементов управления, поддерживающих встроенные шаблоны, см. в разделе Практическое руководство. Создание пользовательских элементов управления-шаблонов ASP.NET.

Пример

В следующем примере кода демонстрируется способ регистрации и объявления на веб-странице ASP.NET настраиваемого серверного элемента управления. В первой части кода создается открытый класс, производный от класса Button. Во второй части кода представлена веб-страница, на которой размещена измененная кнопка. Обратите внимание, что на веб-странице для регистрации пространства имен для элемента управления и установки атрибута tagprefix используется директива @ Register. После этого на элемент управления на странице можно ссылаться с помощью значения tagprefix и имени класса элемента управления, разделенных двоеточием (:).

Для выполнения приведенного в данном примере кода необходимо скомпилировать этот настраиваемый элемент управления. Можно выполнить явную компиляцию и поместить результирующую сборку в папку Bin веб-узла или в глобальный кэш сборок. Иначе можно поместить исходный код в папку App_Code веб-узла, где он будет динамически скомпилирован во время выполнения. В этом примере кода используется динамическая компиляция, поэтому в директиве @ Register на странице не требуется объявлять атрибут Assembly (поскольку исходный код динамически компилируется во время выполнения). Пошаговое руководство по компиляции см. в разделе Пошаговое руководство. Создание и использование пользовательского серверного элемента управления.

1e9b4c9f.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

В данном примере имеется текстовое поле, принимающее вводимые пользователем данные, которые представляют потенциальную угрозу безопасности. По умолчанию веб-страницы ASP.NET проверяют введенные пользователем данные на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.

// A custom Button control to reference in the page.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
  Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class CustomButton : Button
  {
    public CustomButton()
    {
      this.Text = "Click Here";
    }
  }
}

<!-- A page that references the custom control. -->
<%@Page language="C#" %>
<!-- This directive does not require the assembly attribute 
     because the source file is in the App_Code directory, 
     so it gets dynamically compiled with the page. -->
<%@ Register TagPrefix="custom"      namespace="Samples.AspNet.CS.Controls" %>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html>   
 <script runat="server">
     private void custButton_Click(Object sender, EventArgs e)
     {
       TextBox.BackColor = System.Drawing.Color.Green;
       TextBox.Text = "You clicked the button";
     }       
 </script>
 <body>      
    <form id="Form1" runat=server>
       Here is the custom button.<br>
       <custom:CustomButton runat="server" id="custButton"          onclick="custButton_Click" /> 
       <br>
       <br>
       <asp:TextBox id = "TextBox" Text="Click the button"
        Width = "200" BackColor="Cyan" runat="server" /> 
       <br>      
    </form>         
  </body>          
</html>
' A custom Button control to reference in the page.
Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.Configuration
Imports System.Data.Sql
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts

Namespace Samples.AspNet.VB.Controls

  <AspNetHostingPermission(SecurityAction.Demand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  <AspNetHostingPermission(SecurityAction.InheritanceDemand, _
    Level:=AspNetHostingPermissionLevel.Minimal)> _
  Public Class CustomButton
    Inherits Button

    Public Sub New()
      Me.Text = "Click Here"
    End Sub

  End Class

End Namespace
<!-- A page that references the custom control. -->
<%@ Page Language="VB" %>
<!-- This directive does not require the assembly attribute 
     because the source file is in the App_Code directory, 
     so it gets dynamically compiled with the page. -->
<%@ Register TagPrefix="custom"    namespace="Samples.AspNet.VB.Controls" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>   
 <script runat="server">
   Sub custButton_Click(ByVal sender As Object, _
    ByVal e As EventArgs)
     TextBox.BackColor = Drawing.Color.Green
     TextBox.Text = "You clicked the button."
   End Sub
 </script>
 <body>      
    <form id="Form1" runat=server>
       Here is the custom button.<br>
       <custom:CustomButton runat="server" id="custButton"          onclick="custButton_Click" /> 
       <br>
       <br>
       <asp:TextBox id = "TextBox" Text="Click the button"
        Width = "200" BackColor="Cyan" runat="server" /> 
       <br>      
    </form>         
  </body>          
</html>

См. также

Основные понятия

Общие сведения о синтаксисе веб-страниц ASP.NET