テンプレート化されたコントロールを構築しようとしています。Field セクションの一部として、コントロールを子として定義できるようにしたいと考えています。コンパイルしようとすると、「MyTemplateControl.Field' には 'Button' という名前のパブリック プロパティがありません」というエラー メッセージが表示されます。私がやろうとしていることを達成する方法を知っている人はいますか?
以下に XHTML マークアップの例を示し、その下に私のコントロールの実装を示します。
探しているものを明確にするために、例を編集しました。MSDN リンクをありがとうございます。私はすでにそれらを経験してきました。
私が構築しようとしているのは、テーブルを自動フォーマットするデータ入力コントロールです。私たちは多くのデータ入力 Web フォームを行っており、実装時間を短縮したいと考えています。
<cc1:MyForm ID="MyForm1" runat="server">
<ViewTemplate>
<cc1:Field Question="What is your name?">
<asp:Label ID="myLabel" runat="server" />
</cc1:Field>
</ViewTemplate>
<EditTemplate>
<cc1:Field Question="What is your name?">
<asp:Textbox ID="myTextbox" runat="server" />
</cc1:Field>
</EditTemplate>
</cc1:MyForm>
public class MyForm : WebControl, INamingContainer
{
private FieldCollection _fieldCollection;
private FieldCollection _field2Collection;
public FieldCollection ViewTemplate
{
get
{
if (_fieldCollection == null)
{
_fieldCollection = new FieldCollection();
}
return _fieldCollection;
}
}
public FieldCollection EditTemplate
{
get
{
if (_field2Collection == null)
{
_field2Collection = new FieldCollection();
}
return _field2Collection;
}
}
}
public class FieldCollection : CollectionBase
{
.
.
.
}
[ParseChildren(false)]
public class Field
{
.
.
.
}