Özel Sunucu Denetimi Sözdizimi

Özel sunucu denetimi sözdizimi, Web sayfaları, kullanıcı denetimleri ve ana sayfalar da dahil olmak üzere ASP.NET uygulama dosyalarında biçimlendirme ögeleri olarak kullanıcı denetimleri ve özel sunucu denetimlerini bildirmek için kullanılır. Bu sözdizimi, genellikle eşsiz etiket öneki ve denetiminize karşılık gelen bir etiket adı bildirdiğiniz özel ve kullanıcı denetimleri dışında tüm ASP.NET sunucu denetimlerini bildirmek için kullanılan sözdizimi ile hemen hemen aynıdır.

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

Öznitelikler

  • tagprefix
    Sayfada kullanılan biçimlendirme ögelerinin tam nitelikli isim uzayı için belirtilen diğer adı. Diğer adın değeri rastgeledir ancak, ASP.NET dosyasında bildirilen diğer biçimlendirme ögelerinin isim uzayı ile birlikte özel denetim veya kullanıcı denetimi için biçimlendirme ilişkilendirmesi kısayolu sağlar.

  • tagname
    tagname, özel bir denetim için ASP.NET'in çalıştırma zamanı örneği oluşturduğundaki tür adını gösterir. tagname, bir kullanıcı denetimi için, kullanıcı denetimi tanımlayan ilişkili kaynak dosyaya eşler ve bu dosya sırayla ASP.NET'in örnek oluşturduğu türü tanımlar.

  • id
    Denetime programlama aracılığıyla yapılan başvuruyu etkinleştiren eşsiz tanımlayıcı.

  • attributename
    Denetimdeki özelliğe karşılık gelen özniteliğin adı.

  • value
    Özniteliğe (özellik) atanan değer.

  • eventname
    Denetimdeki olayın adı.

  • eventhandlermethod
    Denetim için belirtilen olayı işlemek için tanımlanmış olay işleyicisi adı.

Açıklamalar

ASP.NET Web sayfasının gövdesi içinde kullanıcı denetimleri ve özel sunucu denetimleri bildirmek için özel sunucu denetimi sözdizimi kullanın. Bu sözdiziminin çalışması için, denetimin sayfada veya yapılandırma dosyasında kayıtlı olması gerekir (Web.config dosyasındaki <controls>'e ekleyerek bir uygulamanın tüm sayfalarında denetim kaydedebilirsiniz). @ Register yönergesini kullanarak her sayfada denetim kaydedebilirsiniz.

Kullanıcı veya özel denetim için kullanılan bir ögenin açılış etiketi, runat="server" öznitelik/değer çiftini içermelidir. Program aracılığıyla başvuru denetimi yapılmasını etkinleştirmek için isteğe bağlı olarak id özniteliği için eşsiz bir değer belirtebilirsiniz.

Bir kullanıcı veya özel sunucu denetiminde yazılan herhangi bir özellik sunucu denetiminin açılış etiketinde bildirimli olarak gösterilebilir. Yalnızca öznitelik olarak özellik bildirin ve buna bir değer atayın. Örneğin, width özelliği ile özel metin kutusu denetimi oluşturursanız, denetimin açılış etiketinde width="50" bildirmek sunucu denetimi görüntü genişliğini elli piksel olarak ayarlar.

Bazı durumlarda, öznitelikler kendi özelliklerine sahip nesneler olabilir. Bu durumda, bildirime özellik adını dahil edin. Örneğin, font özniteliğini içeren özel metin kutusu denetimi oluşturursanız, bu denetim name özelliğini içerebilir. Sonra, özelliği sunucu denetimi açılış etiketinde font-name="Arial" olarak bildirebilirsiniz. Özelliklerde birlikte özel sunucu denetimleri geliştirme hakkında daha fazla bilgi için bkz. Sunucu Denetimi Basit özellikler ve alt özellikler değerini.

Olayları, özel sunucu denetimleri ve kullanıcı denetimleri ile herhangi bir ASP.NET sunucu denetimi ile yaptığınızla aynı şekilde bildirebilirsiniz. Bir öznitelik ve değer ile sunucu denetiminin açılış etiketinde olay bağlama belirtin. Olayları destekleyen özel sunucu denetimleri yazma hakkında daha fazla bilgi için bkz. Sunucu olay işleme ASP.NET Web Sayfalar.

Satır içi şablonları destekleyen özel sunucu denetimleri geliştirebilir ve kullanabilirsiniz. Özel sunucu denetiminde şablon bildirmek hakkındaki ayrıntılar için bkz. Sunucu Denetimi Satır İçi Şablon Sözdizimi. Satır içi şablonları destekleyen özel sunucu denetimi yazımı hakkında bilgi edinmek için bkz. Nasıl Yapılır: Templated ASP.NET kullanıcı Denetimler oluşturmak.

Örnek

Aşağıdaki kod örneğinde, bir ASP.NET Web sayfasında nasıl özel sunucu denetimi kaydedileceği ve bildirileceği gösterilmektedir. Kodun ilk bölümü, Button sınıfından türetilen ortak bir sınıf oluşturur. Kodun ikinci parçası özel düğme barındıran bir Web sayfasıdır. Web sayfasının denetim için isim uzayı kaydetmek ve tagprefix özniteliğini ayarlamak için @ Register yönergesini kullandığına dikkat edin. Sonra denetime, sayfada iki nokta üst üste (:) ile ayrılmış tagprefix değeri ve denetimin sınıf adı kullanılarak başvurulmuştur.

Kod örneğini çalıştırmak için bu özel denetimi derlemeniz gerekir. Bunu derleyebilir ve elde edilen derlemeyi Web sitesinin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodunuzu çalışma zamanında dinamik olarak derleneceği sitenizin App_Code klasörüne koyabilirsiniz. Bu kod örneği, dinamik derleme kullanır, böylece sayfadaki @ Register yönergesinin Assembly özniteliği tanımlamasına gerek kalmaz (çünkü kaynak, dinamik olarak çalıştırma zamanında derlenir). Derlemenin nasıl yapılacağını gösteren yol için bkz. Walkthrough: Geliştirme ve bir özel kullanma Sunucu denetim.

Güvenlik notuGüvenlik Notu

Bu örnekte, kullanıcı girişini kabul eden metin kutusu vardır . Bu, olası bir güvenlik tehlikesidir.Varsayılan olarak, ASP.NET Web sayfaları, kullanıcı girişinin komut dosyası veya HTML ögeleri içermediğini doğrular.Daha fazla bilgi için bkz. Komut dosyası açıklarını genel bakış.

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

Ayrıca bkz.

Kavramlar

ASP.NET Web sayfa sözdizimi genel bakış