IWebPartとは? わかりやすく解説

IWebPart インターフェイス

メモ : このインターフェイスは、.NET Framework version 2.0 で新しく追加されたものです。

ASP.NET WebPart コントロールによって使用される共通のユーザー インターフェイス (UI) プロパティを定義します。

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

解説解説

IWebPart インターフェイスは、WebPart コントロールに対するユーザーの操作性を向上させる複数の UI 指向のプロパティを提供します。基本 WebPart クラスから派生するコントロールを作成する場合は、IWebPart インターフェイスのすべてのプロパティの実装が得られます。これは、WebPart 基本クラスがこのインターフェイスを実装するためです。

既存のユーザー コントロール、ASP.NET コントロール、または WebPart クラスから継承していないカスタム サーバー コントロールを、Web パーツ アプリケーションの一部として使用できます。これらは、IWebPart インターフェイスによって宣言されている、これらの UI 指向のプロパティを使用できます。WebPartZoneBase ゾーンに既存のサーバー コントロールを配置している場合、それらは実行時に GenericWebPart オブジェクトでラップされます。GenericWebPart クラスは、WebPart 基本クラスから継承するため、既存のサーバー コントロールを真の WebPart コントロールとして機能させ、それらに IWebPart インターフェイスのプロパティを追加します。

WebPart コントロールではないサーバー コントロールをゾーンに配置する場合、それらのコントロールは実行時に IWebPart プロパティを使用できます。また、ページのマークアップでサーバー コントロールのこれらのプロパティに (ページの永続的な書式で) 値を宣言できます。しかし、これらのプロパティは実行時にサーバー コントロールによって利用されるだけで、IntelliSense などのデザイン時のコーディング機能は、サーバー コントロールで宣言されている IWebPart プロパティを認識しません。これらのコントロールで宣言されたプロパティは、ページを読み込むときに機能しますが、Microsoft Visual Studio は、デザイン時にこれらのプロパティを有効であるとは見なしません。IWebPart プロパティを既存のサーバー コントロールおよびユーザー コントロールに追加してデザイン時のユーザーの操作性を向上させる場合は、サーバー コントロールに IWebPart インターフェイスを実装できます。

IWebPart インターフェイスを実装するもう 1 つの理由 (おそらくは主な理由) は、expando プロパティの使用をサポートしないコントロールのためです。expando プロパティは、実際は、IAttributeAccessor インターフェイスを通じてプロパティとしてクラスに動的に追加できる文字列です。WebControl クラスとその子を含め、このインターフェイスを実装するコントロールでは、expando プロパティを使用できます。このため、すべての ASP.NET サーバー コントロール、それらから派生したカスタム コントロール、Web ユーザー コントロール、および WebPart コントロールは、expando プロパティの使用をサポートします。しかし、基本 Control クラスから直接継承したカスタム コントロールでは、expando プロパティがサポートされません。このため、WebPartZone 内でこれらのコントロールを宣言しても、コントロール上の共通 IWebPart プロパティや、Title、Description などのプロパティを宣言できません。このようなコントロールで上記のプロパティを使用する場合は、IWebPart インターフェイスを実装する必要があります。

実装時の注意 通常、カスタムの WebPart コントロールまたはサーバー コントロールでは、IWebPart インターフェイスを実装する必要はありません。これは、基本 WebPart クラスが既にそのインターフェイスを実装しているからです。カスタムの WebPart コントロール、および WebPartZoneBase ゾーンに配置されているその他のサーバー コントロールは、すべての IWebPart プロパティを使用できます。 IWebPart インターフェイスを各自で実装する主な理由は、カスタム WebPart コントロールであっても他のサーバー コントロールであっても、既定の実装を変更するためです。たとえば、いくつかのプロパティの既定値を指定する場合があります。他にユーザー コントロールまたはサーバー コントロールにインターフェイスを実装する理由は、デザイン時にコントロールでこれらのプロパティを使用しやすくするためです。

使用例使用例

ユーザー コントロールに IWebPart インターフェイスを実装する方法を次のコード例に示します。これは、プロパティの最小限の使用方法を示すための単純な実装例です。

コード例の最初の部分は、ユーザー コントロールを示します。ユーザー コントロールは、IWebPart インターフェイスのすべてのプロパティと、ユーザー インターフェイスでコントロールに結合される 2 つのパブリック プロパティを実装します。2 つのカスタム プロパティは、それぞれ Personalizable 属性を使用します。これは、これらのプロパティの値がブラウザ セッション間で保存されるようにします。このコード例には含まれていませんが、基本 WebPart クラスの実装では、IWebPart インターフェイスのすべてのプロパティも同様にパーソナル化可能として実装されます。

<%@ 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

  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
  
  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
  
  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
  
  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
  
  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
  
  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
  
  ' 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
  
</script>
<div>
<asp:label id="Label1" runat="server">Name</asp:label>
<asp:textbox id="Textbox1" runat="server"
 />
</div>
<div>
<asp:label id="Label2" runat="server">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">
  <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">
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="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;
    }
  }

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

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

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

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

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

      return (string)objSubTitle;
    }

  }

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

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

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

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

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

      return (string)objTitle;
    }
    set
    {
      ViewState["CatalogIconImageUrl"] = value;
    }
  }
  
  // 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;
    }
  }
  
</script>
<div>
<asp:label id="Label1" runat="server">Name</asp:label>
<asp:textbox id="Textbox1" runat="server" />
</div>
<div>
<asp:label id="Label2" runat="server">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">
  <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">
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>

コード例の 2 番目の部分は、ユーザー コントロールをホストする Web ページを示します。ページには、WebPartZone コントロールが含まれ、その内部でユーザー コントロールが参照されます。IWebPart インターフェイスの複数のプロパティ値は、ユーザー コントロールのマークアップで宣言によって設定されています。これで、このユーザー コントロールは、デザイン時および実行時に WebPart コントロールと同じように動作し表示されます。ブラウザにページを読み込んでいる場合は、ページの UI を使用して、実装されている IWebPart プロパティの値をプログラムによって実行時に変更する機能をデモンストレーションできます。一部のプロパティ値を変更した場合は、ページではその変更がわからなくても、ページ ソース (TitleIconImageUrl プロパティ) に表示されているか、アプリケーションの状態データ (CatalogIconImageUrl プロパティ) に格納されています。

<%@ page language="VB" %>
<%@ register tagprefix="uc1" 
    tagname="AccountUserControlVB" 
    src="AccountUserControlvb.ascx"%>
<html>
  <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>
<%@ page language="c#" %>
<%@ register tagprefix="uc1" 
    tagname="AccountUserControlCS" 
    src="AccountUserControlcs.ascx"%>
<html>
  <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>
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

IWebPart プロパティ


IWebPart メンバ




英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「IWebPart」の関連用語

IWebPartのお隣キーワード

   

英語⇒日本語
日本語⇒英語
   



IWebPartのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS