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ı ek iki genel özelliği uygular. her iki özel özellik, bu özelliklerdeki değerlerin tarayıcı oturumları arasında kaydedilmesini sağlayan özniteliğini kullanır Personalizable . Temel WebPart sınıf uygulamasında, arabirimin tüm özelliklerinin IWebPart de bu kod örneğinde olmasalar da kişiselleştirilebilir olarak uygulandığı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. Kullanıcı denetimi için işaretlemede arabirimin özellik değerlerinin IWebPart birkaçının bildirim temelli olarak ayarlandığına dikkat edin; bu da tasarım zamanında ve çalışma zamanında denetime WebPart benzer şekilde davranmasına ve görünmesine olanak tanır. Sayfayı bir tarayıcıya 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 çeşitli kullanıcı arabirimi odaklı özellikler 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 denetimleri veya bir Web Bölümleri uygulamasının parçası olarak sınıfından devralmayan WebPart özel sunucu denetimlerini kullanabilirsiniz ve bunlar arabirim tarafından IWebPart bildirilen bu kullanıcı arabirimi odaklı özellikleri de kullanabilir. 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 bu özelliklerin değerlerini sayfanın işaretlemesinde (sayfa kalıcılığı biçiminde) sunucu denetimlerinde 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 sunucu 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 Descriptiongibi Title denetimler, ö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 WebPart zaten uyguladığından IWebPart özel denetimlerde veya sunucu denetimlerinde arabirimi uygulamanız gerekmez. Bölgelere yerleştirilen WebPartZoneBase özel WebPart denetimler ve diğer sunucu denetimleri tüm IWebPart özellikleri kullanabilir.

Özel denetimde veya başka bir WebPart sunucu denetiminde arabirimi 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. Kullanıcı veya sunucu denetiminde arabirimi uygulamanın bir diğer nedeni de denetimde bu özelliklerle çalışma tasarım zamanı deneyiminin geliştirilmesidir.

Özellikler

Name Description
CatalogIconImageUrl

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

Description

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

Subtitle

Bir denetimin tam başlığını oluşturmak üzere özellik değeriyle Title birleştirilmiş bir WebPart dize alır.

Title

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

TitleIconImageUrl

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

TitleUrl

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

Şunlara uygulanır

Ayrıca bkz.