Share via


Personalizar Sintaxe de controle do servidor

Sintaxe de controle de servidor personalizado é usado para declarar os controles de usuário e controles de servidor personalizados como elementos de marcação no ASP.Arquivos de aplicativo NET, incluindo páginas da Web, controles de usuário e páginas mestras. Essa sintaxe é quase idêntica à sintaxe usada para declarar todos os aplicativos ASP.NET server controles, exceto que, para controles personalizados e o usuário normalmente declarar um prefixo de marca exclusivo e um nome de marca que corresponde ao seu controle.

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

Atributos

  • tagprefix
    Um alias para o espaço para nome totalmente qualificado dos elementos de marcação usada na página. O valor do alias é arbitrário, mas ele fornece uma forma abreviada de associar a marcação para um controle de usuário ou um controle personalizado com o namespace dos outros elementos de marcação declarado em uma página ASP.Arquivo NET.

  • tagname
    Para um controle personalizado, o tagname refere-se ao nome de um tipo para o qual o ASP.NET irá criar uma instância de tempo de execução. Para um controle de usuário, o tagname mapeia para o arquivo de origem associado que define o controle de usuário e por sua vez, o arquivo define o tipo para o qual o ASP.NET cria uma instância.

  • id
    Um identificador exclusivo que permite que a referência programática ao controle.

  • attributename
    O nome de um atributo, corresponde a uma propriedade no controle.

  • value
    O valor atribuído ao atributo (propriedade).

  • eventname
    O nome de um evento no controle.

  • eventhandlermethod
    O nome de um manipulador de eventos definido para manipular o evento especificado para o controle.

Comentários

Use a sintaxe de controle de servidor personalizado para declarar os controles de usuário e controles de servidor personalizados dentro do corpo de uma página ASP.Página da Web do NET. Esta sintaxe funcionar, o controle deve ser registrado na página ou em um arquivo de configuração (você pode registrar um controle em todas as páginas de um aplicativo adicionando-o para o <controls> do arquivo Web. config). Você pode registrar um controle em uma página individual usando o @ Register diretiva.

A marca de abertura de um elemento para um usuário ou controle personalizado deve incluir um runat="server" atributo/valor par. Para habilitar a referência através de programação do controle, opcionalmente, você pode especificar um valor exclusivo para o id atributo.

As propriedades que você tenha criado um usuário ou um controle de servidor personalizado podem ser expostas declarativamente na tag de abertura do controle do servidor. Basta declarar a propriedade como um atributo e atribuir a ele um valor. Por exemplo, se você criar um controle de caixa de texto personalizado com um width propriedade, declarando width="50" na tag de abertura do controle define a largura de exibição do controle de servidor para cinqüenta pixels.

Em alguns casos, atributos podem ser objetos que possuem suas próprias propriedades. Nesse caso, inclua o nome de propriedade na declaração. Por exemplo, se você criar um controle de caixa de texto personalizado que inclui um font atributo, ele pode incluir um name propriedade. Em seguida, você pode declarar a propriedade na tag de abertura do controle de servidor, como font-name="Arial". Para obter mais informações sobre como desenvolver controles de servidor personalizados com propriedades, consulte Propriedades e subpropriedades simples de controle de servidor.

Você pode declarar eventos com controles de servidor personalizados e controles de usuário da mesma forma que faria com qualquer aplicativo ASP.Controle de servidor de rede. Especifique a ligação do evento na tag de abertura do controle de servidor com um atributo e valor. Para obter mais informações sobre autoria de controles de servidor personalizados que oferecem suporte a eventos, consulte Tratamento de Evento de servidor em páginas da Web ASP.NET.

Você pode usar e desenvolver controles de servidor personalizados que oferecem suporte a modelos de in-line. Para obter detalhes sobre como declarar modelos em um controle de servidor personalizado, consulte Sintaxe de modelo de linha de controle de servidor. Para saber como criar controles de servidor personalizados que oferecem suporte a modelos de in-line, consulte Como: criar controles modelos de usuários do ASP.NET.

Exemplo

O exemplo de código a seguir demonstra como você pode registrar e declarar um controle de servidor personalizado em um aplicativo ASP.Página da Web do NET. A primeira seção do código cria uma classe pública derivada de Button classe. A segunda parte do código é uma página da Web que hospeda o botão personalizado. Observe que a página da Web usa o @ Register diretiva para registrar o namespace para o controle e para definir o tagprefix atributo. O controle é referenciado na página usando o tagprefix valor e nome de classe do controle, separados por dois-pontos (:).

No exemplo de código ser executado, você deve compilar esse controle personalizado. Você pode compilá-lo explicitamente e colocar o assembly resultante na pasta Bin do seu site da Web ou o cache global de assemblies. Como alternativa, você pode colocar o código-fonte em seu site na pasta App_Code, onde ele irá ser compilada em tempo de execução dinamicamente. Este exemplo de código usa compilação dinâmica, razão pela qual o @ Register diretiva na página não precisa declarar um Assembly de atributo (porque a fonte é compilada dinamicamente em tempo de execução). Para uma explicação passo a passo que demonstre como compilar, consulte Passo a passo: desenvolvendo e usando um controle de servidor Web personalizado.

Observação de segurançaObservação sobre segurança

Este exemplo tem uma caixa de texto que aceita entrada do usuário, que é uma ameaça potencial de segurança.Por padrão, páginas Web ASP.NET validam se as entradas de usuário não incluem scripts ou elementos HTML.Para obter mais informações, consulte Visão geral de scripts maliciosos.

// 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>

Consulte também

Conceitos

Visão geral da sintaxe de página da Web ASP.NET