Aracılığıyla paylaş


IWebPart Arabirim

Tanım

ASP.NET WebPart denetimleri tarafından kullanılan ortak kullanıcı arabirimi (UI) özelliklerini tanımlar.

public interface class IWebPart
public interface IWebPart
type IWebPart = interface
Public Interface IWebPart
Türetilmiş

Örnekler

Aşağıdaki kod örneği, arabirimin kullanıcı denetiminde IWebPart nasıl uygulanduğunu gösterir. Bu, özelliklerin nasıl uygulandığını minimum düzeyde gösteren basit bir uygulamadır.

Kod örneğinin ilk bölümünde kullanıcı denetimi gösterilir. Kullanıcı denetimi, arabirimin tüm özelliklerini ve kullanıcı arabirimindeki IWebPart denetimlere bağlı iki ek genel özelliği uygular. İki özel özelliğin Personalizable her birinde, bu özelliklerdeki değerlerin tarayıcı oturumlarında kaydedilmesini sağlayan özniteliği kullanılır. Temel WebPart sınıf uygulamasında arabirimin tüm özelliklerinin de kişiselleştirilebilir olarak uygulandığını IWebPart , ancak bu kod örneğinde yer almadığını unutmayın.

<%@ control language="C#" classname="AccountUserControlCS"%>
<%@ implements interface="System.Web.UI.WebControls.WebParts.IWebPart" %>

<script runat="server">

  private string m_Description;
  private string m_Title;
  private string m_TitleIconImageUrl;
  private string m_TitleUrl;
  private string m_CatalogIconImageUrl;
  
  [Personalizable]
  public string UserName
  {
    get
    {
      if(String.IsNullOrEmpty(Textbox1.Text))
        return String.Empty;
      else
        return Textbox1.Text;
    }
    
    set
    {
      Textbox1.Text = value;
    }
  }
    
  [Personalizable]
  public string Phone
  {
    get
    {
      if(String.IsNullOrEmpty(Textbox2.Text))
        return String.Empty;
      else
        return Textbox2.Text;
    }
    
    set
    {
      Textbox2.Text = value;
    }
  }

  // <snippet3>
  public string Description
  {
    get
    {
      object objTitle = ViewState["Description"];
      if (objTitle == null)
        return String.Empty;

      return (string)objTitle;
    }
    set
    {
      ViewState["Description"] = value;
    }
  }
  // </snippet3>

  // <snippet4>
  public string Title
  {
    get
    {
      object objTitle = ViewState["Title"];
      if (objTitle == null)
        return String.Empty;

      return (string)objTitle;
    }
    set
    {
      ViewState["Title"] = value;
    }
  }
  // </snippet4>

  // <snippet5>
  public string Subtitle
  {
    get
    {
      object objSubTitle = ViewState["Subtitle"];
      if (objSubTitle == null)
        return "My Subtitle";

      return (string)objSubTitle;
    }

  }
  // </snippet5>

  // <snippet6>
  public string TitleIconImageUrl
  {
    get
    {
      object objTitle = ViewState["TitleIconImageUrl"];
      if (objTitle == null)
        return String.Empty;

      return (string)objTitle;
    }
    set
    {
      ViewState["TitleIconImageUrl"] = value;
    }
  }
  // </snippet6>

  // <snippet7>
  public string TitleUrl
  {
    get
    {
      object objTitle = ViewState["TitleUrl"];
      if (objTitle == null)
        return String.Empty;

      return (string)objTitle;
    }
    set
    {
      ViewState["TitleUrl"] = value;
    }
  }
  // </snippet7>

  // <snippet8>
  public string CatalogIconImageUrl
  {
    get
    {
      object objTitle = ViewState["CatalogIconImageUrl"];
      if (objTitle == null)
        return String.Empty;

      return (string)objTitle;
    }
    set
    {
      ViewState["CatalogIconImageUrl"] = value;
    }
  }
  // </snippet8>
  
  // <snippet9>
  // Update the selected IWebPart property value.
  void Button1_Click(object sender, EventArgs e)
  {
    String propertyValue = Server.HtmlEncode(TextBox3.Text);
    TextBox3.Text = String.Empty;

    switch (RadioButtonList1.SelectedValue)
    {
      case "title":
        this.Title = propertyValue;
        break;
      case "description":
        this.Description = propertyValue;
        break;
      case "catalogiconimageurl":
        this.CatalogIconImageUrl = propertyValue;
        break;
      case "titleiconimageurl":
        this.TitleIconImageUrl = propertyValue;
        break;
      case "titleurl":
        this.TitleUrl = propertyValue;
        break;
      default:
        break;
    }
  }
  // </snippet9>
  
</script>
<div>
<asp:label id="Label1" runat="server" AssociatedControlID="Textbox1">
  Name</asp:label>
<asp:textbox id="Textbox1" runat="server" />
</div>
<div>
<asp:label id="Label2" runat="server" AssociatedControlID="Textbox2">
  Phone</asp:label>
<asp:textbox id="Textbox2" runat="server"></asp:textbox>
</div>
<div>
<asp:button id="Button2" runat="server" text="Save Form Values" />
</div>
<hr />
<asp:Label ID="Label3" Runat="server" Text="Label" 
  AssociatedControlID="RadioButtonList1">
  <h3>Update selected IWebPart property values.</h3>
</asp:Label>
<asp:RadioButtonList ID="RadioButtonList1" Runat="server">
  <asp:ListItem Value="title">Title</asp:ListItem>
  <asp:ListItem Value="description">Description</asp:ListItem>
  <asp:ListItem Value="catalogiconimageurl">CatalogIconImageUrl</asp:ListItem>
  <asp:ListItem Value="titleiconimageurl">TitleIconImageUrl</asp:ListItem>
  <asp:ListItem Value="titleurl">TitleUrl</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Label ID="Label4" runat="server" Text="Label"
  AssociatedControlID="TextBox3">
Property Value:  
</asp:Label>
<asp:TextBox ID="TextBox3" runat="server">
</asp:TextBox>  
<br />  
<asp:Button ID="Button1" runat="server" 
  Text="Update Property" 
  OnClick="Button1_Click">
</asp:Button>
<%@ control language="VB" classname="AccountUserControlVB"%>
<%@ implements interface="System.Web.UI.WebControls.WebParts.IWebPart" %>

<script runat="server">

  Private m_Description As String
  Private m_Title As String
  Private m_TitleIconImageUrl As String
  Private m_TitleUrl As String
  Private m_CatalogIconImageUrl As String


  <Personalizable()> _
  Public Property UserName() As String
    Get
      If String.IsNullOrEmpty(Textbox1.Text) Then
        Return String.Empty
      Else
        Return Textbox1.Text
      End If
    End Get
    Set(ByVal value As String)
      Textbox1.Text = Value
    End Set
  End Property

  <Personalizable()> _
  Public Property Phone() As String
    Get
      If String.IsNullOrEmpty(Textbox2.Text) Then
        Return String.Empty
      Else
        Return Textbox2.Text
      End If
    End Get
    Set(ByVal value As String)
      Textbox2.Text = Value
    End Set
  End Property

  ' <snippet3>
  Public Property Description() As String _
    Implements IWebPart.Description
    Get
      Dim objTitle As Object = ViewState("Description")
      If objTitle Is Nothing Then
        Return String.Empty
      End If
      Return CStr(objTitle)
    End Get
    Set(ByVal value As String)
      ViewState("Description") = value
    End Set
  End Property
  ' </snippet3>
  
  ' <snippet4>
  Public Property Title() As String _
    Implements IWebPart.Title
    Get
      Dim objTitle As Object = ViewState("Title")
      If objTitle Is Nothing Then
        Return String.Empty
      End If
      Return CStr(objTitle)
    End Get
    Set(ByVal value As String)
      ViewState("Title") = value
    End Set
  End Property
  ' </snippet4>
  
  ' <snippet5>
  ReadOnly Property Subtitle() As String _
    Implements IWebPart.Subtitle
    Get
      Dim objSubTitle As Object = ViewState("Subtitle")
      If objSubTitle Is Nothing Then
        Return "My Subtitle"
      End If
      Return CStr(objSubTitle)
    End Get
  End Property
  ' </snippet5>
  
  ' <snippet6>
  Public Property TitleIconImageUrl() As String _
    Implements IWebPart.TitleIconImageUrl
    Get
      Dim objTitle As Object = ViewState("TitleIconImageUrl")
      If objTitle Is Nothing Then
        Return String.Empty
      End If
      Return CStr(objTitle)
    End Get
    Set(ByVal value As String)
      ViewState("TitleIconImageUrl") = value
    End Set
  End Property
  ' </snippet6>
  
  ' <snippet7>
  Public Property TitleUrl() As String _
    Implements IWebPart.TitleUrl
    Get
      Dim objTitle As Object = ViewState("TitleUrl")
      If objTitle Is Nothing Then
        Return String.Empty
      End If
      Return CStr(objTitle)
    End Get
    Set(ByVal value As String)
      ViewState("TitleUrl") = value
    End Set
  End Property
  ' </snippet7>
  
  ' <snippet8>
  Public Property CatalogIconImageUrl() As String _
    Implements IWebPart.CatalogIconImageUrl
    Get
      Dim objTitle As Object = ViewState("CatalogIconImageUrl")
      If objTitle Is Nothing Then
        Return String.Empty
      End If
      Return CStr(objTitle)
    End Get
    Set(ByVal value As String)
      ViewState("CatalogIconImageUrl") = value
    End Set
  End Property
  ' </snippet8>
  
  ' <snippet9>
  ' Update the selected IWebPart property value.
  Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim propertyValue As String = Server.HtmlEncode(TextBox3.Text)
    TextBox3.Text = String.Empty
      
    Select Case RadioButtonList1.SelectedValue
      Case "title"
        Me.Title = propertyValue
      Case "description"
        Me.Description = propertyValue
      Case "catalogiconimageurl"
        Me.CatalogIconImageUrl = propertyValue
      Case "titleiconimageurl"
        Me.TitleIconImageUrl = propertyValue
      Case "titleurl"
        Me.TitleUrl = propertyValue
      Case Else
    End Select

  End Sub 'Button1_Click
  ' </snippet9>
  
</script>
<div>
<asp:label id="Label1" runat="server" AssociatedControlID="Textbox1">
  Name</asp:label>
<asp:textbox id="Textbox1" runat="server" />
</div>
<div>
<asp:label id="Label2" runat="server" AssociatedControlID="Textbox2">
  Phone</asp:label>
<asp:textbox id="Textbox2" runat="server"></asp:textbox>
</div>
<div>
<asp:button id="Button2" runat="server" text="Save Form Values" />
</div>
<hr />
<asp:Label ID="Label3" Runat="server" AssociatedControlID="RadioButtonList1">
  <h3>Update selected IWebPart property values.</h3>
</asp:Label>
<asp:RadioButtonList ID="RadioButtonList1" Runat="server">
  <asp:ListItem Value="title">Title</asp:ListItem>
  <asp:ListItem Value="description">Description</asp:ListItem>
  <asp:ListItem Value="catalogiconimageurl">CatalogIconImageUrl</asp:ListItem>
  <asp:ListItem Value="titleiconimageurl">TitleIconImageUrl</asp:ListItem>
  <asp:ListItem Value="titleurl">TitleUrl</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Label ID="Label4" runat="server" AssociatedControlID="TextBox3">
Property Value:  
</asp:Label>
<asp:TextBox ID="TextBox3" runat="server">
</asp:TextBox>  
<br />  
<asp:Button ID="Button1" runat="server" 
  Text="Update Property" 
  OnClick="Button1_Click">
</asp:Button>

Kod örneğinin ikinci bölümünde kullanıcı denetimini barındıran Web sayfası gösterilir. Sayfada kullanıcı denetimine başvurulan bir WebPartZone denetim vardır. Arabirimin IWebPart özellik değerlerinin birkaçının kullanıcı denetimi için işaretlemede bildirim temelli olarak ayarlandığına dikkat edin. Bu da hem tasarım zamanında hem de çalışma zamanında bir WebPart denetime benzer şekilde davranmasına ve görünmesine olanak tanır. Sayfayı bir tarayıcıda yüklerseniz, çalışma zamanında uygulanan IWebPart özelliklerin değerlerini program aracılığıyla değiştirme özelliğini göstermek için sayfadaki kullanıcı arabirimini kullanabilirsiniz. Özellik değerlerinden bazılarını değiştirdiğinizde, değişiklikler sayfada belirgin olmaz, ancak sayfa kaynağında ( TitleIconImageUrl özellik) görünür veya uygulamanın durum verilerinde ( CatalogIconImageUrl özellik) depolanır.

Önemli

Bu örnekte, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu vardır. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz. Betik Açıklarına Genel Bakış.

<%@ page language="c#" %>
<%@ register tagprefix="uc1" 
    tagname="AccountUserControlCS" 
    src="AccountUserControlcs.ascx"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Personalizable User Control with IWebPart Properties
    </title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:webpartmanager id="WebPartManager1" runat="server" />
      <asp:webpartzone 
        id="zone1" 
        runat="server" 
        headertext="Main" 
        CloseVerb-Enabled="false">
        <zonetemplate>
          <uc1:AccountUserControlCS 
            runat="server" 
            id="accountwebpart" 
            title="Account Form"
            Description="Account Form with default values."
            CatalogIconImageUrl="MyCatalogIcon.gif"
            TitleIconImageUrl="MyTitleIcon.gif"
            TitleUrl="MyUrl.html"/>
        </zonetemplate>
      </asp:webpartzone>    
    </form>
  </body>
</html>
<%@ page language="VB" %>
<%@ register tagprefix="uc1" 
    tagname="AccountUserControlVB" 
    src="AccountUserControlvb.ascx"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      Personalizable User Control with IWebPart Properties
    </title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:webpartmanager id="WebPartManager1" runat="server" />
      <asp:webpartzone 
        id="zone1" 
        runat="server" 
        headertext="Main" 
        CloseVerb-Enabled="false">
        <zonetemplate>
          <uc1:AccountUserControlVB 
            runat="server" 
            id="accountwebpart" 
            title="Account Form"
            Description="Account Form with default values."
            CatalogIconImageUrl="MyCatalogIcon.gif"
            TitleIconImageUrl="MyTitleIcon.gif"
            TitleUrl="MyUrl.html"/>
        </zonetemplate>
      </asp:webpartzone>    
    </form>
  </body>
</html>

Açıklamalar

Arabirim, IWebPart denetimlerle WebPart çalışma kullanıcı deneyimini geliştiren birkaç kullanıcı arabirimi odaklı özellik sağlar. Temel sınıftan türetilen denetimler oluşturduğunuzda, temel WebPart sınıf bu arabirimi uyguladığından arabirimdeki IWebPart tüm özelliklerin WebPart bir uygulamasını alırsınız.

Var olan kullanıcı denetimlerini, ASP.NET denetimlerini veya bir Web Bölümleri uygulamasının parçası olarak sınıfından devralmayan WebPart özel sunucu denetimlerini kullanabilirsiniz ve arabirim tarafından IWebPart bildirilen bu kullanıcı arabirimi odaklı özellikleri de kullanabilirler. Var olan sunucu denetimlerini bir WebPartZoneBase bölgeye yerleştirirseniz, çalışma zamanında bunlar bir GenericWebPart nesneyle sarmalanmış olur. GenericWebPart sınıfı temel sınıftan WebPart devraldığından, var olan sunucu denetimlerinin gerçek WebPart denetimler olarak davranmasını sağlar ve arabiriminin IWebPart özelliklerini ekler.

Bölgelere denetim olmayan WebPart sunucu denetimleri yerleştirirseniz, bunlar çalışma zamanında özellikleri kullanabilir IWebPart ve ayrıca sayfa işaretlemesinde (sayfa kalıcılık biçiminde) sunucu denetimlerinde bu özelliklerin değerlerini bildirebilirsiniz. Ancak, bu özellikler yalnızca çalışma zamanında sunucu denetimleri tarafından kullanılabildiğinden, IntelliSense gibi tasarım zamanı kodlama özellikleri sunucu denetimlerinde bildirilen özellikleri tanımaz IWebPart . Sayfayı yüklediğinizde bu denetimlerde bildirilen özellikler çalışmaya devam eder, ancak Microsoft Visual Studio özellikleri tasarım zamanında geçerli olarak tanımaz. Tasarım zamanı kullanıcı deneyimini geliştirmek için özellikleri mevcut sunucuya ve kullanıcı denetimlerine eklemek IWebPart istiyorsanız, arabirimi bir sunucu denetiminde uygulayabilirsiniz IWebPart .

Arabirimi uygulamanın IWebPart ana nedeni, expando (özel) özelliklerinin kullanımını desteklemeyen denetimlerdir. Expando özellikleri, arabirim aracılığıyla bir sınıfa dinamik olarak özellik olarak eklenebilen IAttributeAccessor dizelerdir. sınıfı ve alt öğeleri de dahil olmak üzere WebControl bu arabirimi uygulayan denetimler expando özelliklerini kullanabilir. Bu nedenle, tüm ASP.NET sunucu denetimleri, bunlardan türetilen özel denetimler, Web kullanıcı denetimleri ve WebPart denetimleri expando özelliklerinin kullanımını destekler. Ancak doğrudan temel Control sınıftan devralan özel denetimler expando özelliklerini desteklemez. Bu nedenle, içinde bu denetimleri WebPartZonebildirirseniz, ve gibi TitleDescriptiondenetimler, özellikler üzerinde ortak IWebPart özellikleri bildiremezsiniz. Bu özellikleri bu tür denetimlerle kullanmak istiyorsanız arabirimini IWebPart uygulamanız gerekir.

Uygulayanlara Notlar

Normalde, temel WebPart sınıf arabirimi zaten uyguladığından IWebPart arabirimini özel WebPart denetimlerde veya sunucu denetimlerinde uygulamanız gerekmez. Özel WebPart denetimler ve bölgelere WebPartZoneBase yerleştirilen diğer sunucu denetimleri tüm IWebPart özellikleri kullanabilir.

Arabirimi özel denetimde veya başka bir WebPart sunucu denetiminde kendiniz uygulamanın IWebPart temel nedeni, varsayılan uygulamayı değiştirmek istemenizdir. Örneğin, bazı özellikler için varsayılan değerler sağlamak isteyebilirsiniz. Arabirimi bir kullanıcı veya sunucu denetiminde uygulamanın bir diğer nedeni de denetimde bu özelliklerle çalışmanın tasarım zamanı deneyiminin geliştirilmesidir.

Özellikler

CatalogIconImageUrl

Denetim kataloğundaki bir denetimi temsil eden görüntünün WebPart URL'sini alır veya ayarlar.

Description

Araç İpuçlarında ve denetim kataloglarında kullanmak üzere bir denetimin WebPart ne yaptığını özetleyen kısa bir tümcecik alır veya ayarlar.

Subtitle

Denetim için tam bir başlık oluşturmak üzere özellik değeriyle Title birleştirilmiş bir WebPart dize alır.

Title

Denetimin başlığını WebPart alır veya ayarlar.

TitleIconImageUrl

Denetimin kendi başlık çubuğunda web bölümleri denetimini temsil etmek için kullanılan görüntünün URL'sini alır veya ayarlar.

TitleUrl

Denetimle ilgili WebPart ek bilgiler için bir URL alır veya ayarlar.

Şunlara uygulanır

Ayrıca bkz.