ASP.NET
ASP.NET - ユーザーコントロール
サーチ…
前書き
ユーザーコントロールは、ASPXページと同じ方法でコードビハインドでHTMLマークアップとサーバーコントロールを設定できるコンテナです。彼らはページの再利用可能な小さな単位として扱われるので、スタンドアロンページとして実行することはできませんし、 html 、 body 、 form 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>