ASP.NETでWebユーザーコントロールを作成していますが、あるユー
ASP.NETでWebユーザーコントロールを作成していますが、あるユーザーコントロールを拡張して別のユーザーコントロールを作成したいと思っています。
Webカスタムコントロールであれば、クラスの継承の概念を使って派生クラスを作成し、追加したいコントロールやフィールドを派生クラスで追加するのですが、ユーザーコントロールでこれと同じ事はできないものでしょうか?
Visual Studio 2005環境ですが、Webカスタムコントロールはデザイナを使った開発ができず、わざわざDLLにコンパイルした後aspxページに埋め込んでやらないと見た目を確認できません。その点、ユーザーコントロールは通常のWindowsフォームアプリケーションのように、デザイナ上でコントロールをD&Dし、プロパティエディタでプロパティの設定もできます。
下記に試してみたコードを示します。
[WebUserControl1.ascx]
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<%@ Register Assembly="WebBaseFormLib" Namespace="WebBaseFormLib" TagPrefix="cc1" %>
<asp:Button ID="Button1" runat="server" Text="Button1" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
[WebUserControl1.ascx.cs]
namespace WebApplication1
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
[WebUserControl2.ascx]
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl2.ascx.cs" Inherits="WebApplication1.WebUserControl2" %>
<%@ Reference Control="~/WebUserControl1.ascx" %>
<asp:Button ID="Button2" runat="server" Text="Button2" />
[WebUserControl2.ascx.cs]
namespace WebApplication1
{
public partial class WebUserControl2 : WebUserControl1 //WebUserControl1を継承
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
こうした場合に、WebUserControl2をaspxページで使用してもButton2しか表示されません。
期待する動きとしては、WebUserControl1に配置したButton1とtextbox1が透過的に表示して欲しかったのですが。