サーチ…


前書き

ユーザーコントロールは、ASPXページと同じ方法でコードビハインドでHTMLマークアップとサーバーコントロールを設定できるコンテナです。彼らはページの再利用可能な小さな単位として扱われるので、スタンドアロンページとして実行することはできませんし、 htmlbodyform HTML要素を持っていてはいけません。

ユーザーコントロールの導入

ユーザーコントロールは、マスターページと同様にASP.NETページ全体で再利用できるように作成されています。基本ページのレイアウトを共有する代わりに、ユーザーコントロールは、HTML / ASP.NETビルトインサーバーコントロールのグループまたは特定のフォームレイアウト、たとえばコメントの投稿やゲストメモを共有します。

ユーザーコントロールには、クライアントサイドスクリプトを含むHTMLコントロールとASP.NETサーバーコントロールの両方を含めることができます。

ユーザーコントロールには通常、定義の上にControlディレクティブが含まれます。

<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>

ASPXページと同様に、ユーザーコントロールは、特定のイベントやタスクを実行するコードビハインドと関連付けることができるマークアップで構成されています。したがって、 <html><body> 、および<form> <body>を除くユーザーコントロール<form>タグ。

単純なユーザーコントロールのマークアップの例を次に示します。

<%-- UserControl.ascx --%>
<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
<div>
    <asp:Label ID="Label1" runat="server" />
    <br />
    <asp:Button ID="Button1" runat="server" Text="Click Here" OnClick="Button1_Click" />
</div>

コードビハインドの例:

// UserControl.ascx.cs
public partial class UserControl : System.Web.UI.UserControl
{
    protected void Button1_Click(Object sender, EventArgs e)
    {
        Label1.Text = "Hello World!";
    }
}

ASPXページに挿入されたユーザーコントロールの前に、ソースディレクティブ、タグ名とタグプレフィックスを持つユーザーコントロールを参照するページの上にRegisterディレクティブを宣言する必要があります。

<%@ Register Src="UserControl.ascx" TagName="UserControl" TagPrefix="uc" %>

その後、ASP.NETの組み込みサーバーコントロールのようなASPXページ内にユーザーコントロールを配置できます。

<uc:UserControl ID="UserControl1" runat="server" />

プログラミングによるユーザー制御インスタンスの作成

ASPXコードビハインドページ内でユーザーコントロールのインスタンスをインスタンス化する場合は、次のようにPage_Loadイベントにユーザーコントロール宣言を記述する必要があります。

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(Object sender, EventArgs e)
    {
        Control control1 = LoadControl("UserControl.ascx");
        Page.Controls.Add(control1);
    }
}

LoadControlメソッドの実行時には、ユーザーコントロールASCXファイルが既に作成されている必要があります。

ユーザーコントロールをプログラマチックに宣言する別の方法は、 PlaceHolderを使用することです。

public partial class Default : System.Web.UI.Page
{
    public PlaceHolder Placeholder1;
    protected void Page_Load(Object sender, EventArgs e)
    {
        Control control1 = LoadControl("UserControl.ascx");
        Placeholder1.Controls.Add(control1);
    }
}

必要に応じて、 PlaceHolderは、ページに動的に追加されたすべてのサーバーコントロールを格納しているコンテナにユーザーコントロールを配置します。ここでPage.Controls 、ユーザーコントロールをページ内に直接挿入します。

ユーザーコントロールのカスタムプロパティの追加

標準のASP.NET組み込みサーバーコントロールと同様に、ユーザーコントロールはその定義タグにプロパティ(属性)を持つことができます。次のように、 UserControl.ascxファイルに色効果を追加したいとします。

<uc:UserControl ID="UserControl1" runat="server" Color="blue" />

この時点で、ユーザーコントロールのカスタム属性/プロパティは、ユーザーコントロールのコード内にプロパティを宣言することによって設定できます。

private String _color;
public String Color
{
    get
    {
        return _color;
    }
    set
    {
        _color = value;
    }
}

さらに、ユーザーコントロールのプロパティに既定値を設定する場合は、ユーザーコントロールのコンストラクターメソッド内に既定値を割り当てます。

public UserControl()
{
    _color = "red";
}

次に、次の例のように、ユーザー属性のマークアップを変更して色属性を追加する必要があります。

<%@ Control Language="C#" AutoEventWireup="True" CodeFile="UserControl.ascx.cs" %>
<div>
    <span style="color:<%= Color %>"><asp:Label ID="Label1" runat="server" /></span>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Click Here" OnClick="Button1_Click" />
</div>


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow