Sdílet prostřednictvím


Syntaxe vlastních serverových ovládacích prvků

Syntaxe vlastních serverových ovládacích prvků je v souborech aplikací technologie ASP.NET používána pro deklarování uživatelských ovládacích prvků a uživatelských serverových prvků ve tvaru značek elementů. To zahrnuje webové stránky, uživatelské ovládací prvky a hlavní stránky. Tato syntaxe je téměř shodná se syntaxí pro deklarování všech serverových ovládacích prvků ASP.NET s tím rozdílem, že pro vlastní a uživatelské ovládací prvky se obvykle deklaruje jedinečný prefix značky, který odpovídá vašemu ovládacímu prvku.

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

v případě vícehodnotových atributů

  • tagprefix
    Alias pro plně specifikovaný obor názvů značek elementů použitých na stránce. Hodnota aliasu je libovolná, ale nabízí zjednodušený způsob přidružení značky vlastního nebo uživatelského ovládacího prvku s oborem názvů prvků jiných značek deklarovaných v souboru aplikace technologie ASP.NET.

  • tagname
    Ve vlastním ovládacím prvku odkazuje tagname na název typu, pro který technologie ASP.NET vytvoří za běhu instanci. V uživatelském ovládacím prvku ukazuje tagname na související zdrojový soubor, který definuje uživatelský ovládací prvek, a tento soubor zase definuje typ, pro který technologie ASP.NET vytvoří instanci.

  • id
    Jedinečný identifikátor umožňující programový odkaz na ovládací prvek.

  • attributename
    Název atributu, který odpovídá vlastnosti ovládacího prvku.

  • value
    Hodnota přiřazená atributu (vlastnosti).

  • eventname
    Název události ovládacího prvku.

  • eventhandlermethod
    Název obslužné rutiny události definované ke zpracování zadané události ovládacího prvku.

Poznámky

Pro deklarování uživatelského ovládacího prvku a vlastního serverového ovládacího prvku uvnitř těla webové stránky ASP.NET, použijte syntaxi vlastního serverového ovládacího prvku. Aby tato syntaxe fungovala, musí být ovládací prvek registrován na stránce nebo v konfiguračním souboru (je možné zaregistrovat ovládací prvek na všech stránkách aplikace jeho přidáním do <controls> v souboru web.config). Ovládací prvek lze zaregistrovat na jednotlivých stránkách pomocí direktivy @ Register.

Otevírací značka uživatelského nebo vlastního ovládacího elementu musí obsahovat dvojici atribut/hodnota runat="server". Chcete-li povolit odkazování se na ovládací prvek přímo z kódu, lze nepovinně uvést jedinečnou hodnotu atributu id.

Všechny vlastnosti, které jsou vytvořeny v uživatelském nebo vlastním serverovém ovládacím prvku, mohou být deklarativně vystaveny v otevírací značce serverového ovládacího prvku. Stačí deklarovat vlastnost jako atribut a přiřadit mu hodnotu. Například pokud vytvoříte vlastní textové pole s vlastností width, která v otevírací značce ovládacího prvku deklaruje width="50" , nastaví server šířku zobrazeného prvku na padesát pixelů.

V některých případech mohou atributy být objekty, které mají své vlastní vlastnosti. V takovém případě, vložte název vlastnosti do deklarace. Například pokud vytvoříte vlastní ovládací prvek textové pole, který obsahuje atribut font, může zahrnovat vlastnost name . Potom můžete deklarovat vlastnost v otevírací značce serverového ovládacího prvku jako font-name="Arial". Další informace o vývoji vlastních serverových ovládacích prvků s vlastnostmi naleznete v Jednoduché vlastnosti a podvlastnosti v serverových ovládacích prvcích.

Události vlastních serverových ovládacích prvků a uživatelských ovládacích prvků, lze definovat stejným způsobem jako u jakéhokoli serverového ovládacího prvku technologie ASP.NET. Určete atributem a hodnotou vazbu události v otevírací značce serverového ovládacího prvku. Další informace o vytváření vlastních serverových ovládacích prvků podporujících události, naleznete v Zpracování serverových událostí na webových stránkách ASP.NET.

Lze použít a vyvíjet vlastní serverové ovládací prvky, které podporují vložené šablony. Podrobné informace o tom, jak deklarovat šablony ve vlastních serverových prvcích naleznete v Syntaxe vložené šablony serverového ovládacího prvku. Další informace, jak vytvářet vlastní serverové ovládací prvky, které podporují vložené šablony, naleznete v tématu Postupy: Vytváření uživatelských ovládacích prvků technologie ASP.NET v šablonách.

Příklad

Následující příklad kódu ukazuje, jak lze registrovat a deklarovat vlastní serverový ovládací prvek na webové stránce ASP.NET. První část kódu vytvoří veřejnou třídu odvozenou z třídy Button. Druhá část kódu je webová stránka, která je hostitelem vlastního tlačítka. Všimněte si, že webová stránka používá direktivu @ Register k zaregistrování oboru názvů pro ovládací prvek a nastavení atributu tagprefix. Na stránce se pak lze na ovládací prvek odkazovat pomocí hodnoty tagprefix a názvu třídy ovládacího prvku oddělených dvojtečkou (:).

Pro spuštění ukázky kódu je potřeba tento vlastní ovládací prvek zkompilovat. Je možné jej zkompilovat explicitně a výsledné sestavení vložit do složky Bin vaší webové stránky, nebo do globální mezipaměti sestavení (GAC). Alternativně můžete umístit zdrojové kódy do složky App_Code vašeho webu, kde budou dynamicky zkompilovány v době běhu. Tento příklad kódu používá dynamickou kompilaci, což je důvod, proč direktiva stránky @ Register nepotřebuje deklarovat atribut Assembly (protože je zdrojový kód dynamicky kompilován v době běhu). Návod, který demonstruje, jak kompilovat, naleznete v Návod: vývoj a použití vlastního ovládacího prvku webového serveru.

Poznámka k zabezpečeníPoznámka k zabezpečení

Tento příklad obsahuje textové pole přijímající vstup uživatele, což představuje potencionální bezpečnostní riziko.Ve výchozím nastavení webové stránky technologie ASP.NET ověřují, že vstup uživatele neobsahuje skript nebo prvky jazyka HTML.Další informace naleznete v tématu Přehled zneužití skriptů.

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

Viz také

Koncepty

Přehled syntaxe webová stránky technologie ASP.NET