2008-09-15 10 views
1

私は基本的に私は、タグの宣言が見えるようにしたい、デザインモードで私のWebコントロールをより読みやすくしたいと思います:Webコントロールのプロパティ

<cc1:Ctrl ID="Value1" runat="server">   
    <Values>string value 1</Value> 
    <Values>string value 2</Value> 
</cc1:Ctrl> 

は、私が背後にあるコードでプライベート変数を持っているとしましょう:

List<string> values = new List<string>(); 

私のユーザーコントロールがマークアップで宣言されている値でプライベート変数に記入するにはどうすればよいですか?


ごめんなさい。基本的に私はITemplateが提供する機能を好き与えられた例では

しかし、つまり、あなたがinstansitatedすることができますどのように多くのテンプレート、実行時に知っておく必要があり、この場合、

void Page_Init() { 
if (messageTemplate != null) { 
    for (int i=0; i<5; i++) { 
     MessageContainer container = new MessageContainer(i); 
     messageTemplate.InstantiateIn(container); 
     msgholder.Controls.Add(container); 
    } 
} 

}で

http://msdn.microsoft.com/en-us/library/aa719834.aspx

マークアップは次のようになります。

<acme:test runat=server> 
    <MessageTemplate> 
    Hello #<%# Container.Index %>.<br> 
    </MessageTemplate> 
</acme:test> 

いいえ、きれいで、タグプレフィックスなどはありません。クリーンなタグ。

マークアップがきれいであることを愚かに思っている可能性があります。シンプルなものがあるかどうかは不思議です。

答えて

2

は属性です:

[PersistenceMode(PersistenceMode.InnerProperty)] 

Persistence Mode

は、あなたとあなたの名前空間接頭辞を登録する必要があることを忘れないでください:

<%@ Register Namespace="MyNamespace" TagPrefix="Pref" %> 
0

私は2つのオプションを参照していますが、どちらもあなたのWebコントロールに依存して、値のコレクションを実装しています。最初のオプションは、プライベート変数の代わりにコントロールのコレクションを使用することです。もう1つの方法は、実行時にコントロールのコレクションをプライベート変数にコピーすることです(たとえば、Page_Loadイベントハンドラなど)。

リストボックスのようなアイテムのコレクションを実装するWebコントロールがあるとします。

<asp:ListBox ID="ListBox1" runat="server"> 
     <asp:ListItem>String 1</asp:ListItem> 
     <asp:ListItem>String 2</asp:ListItem> 
     <asp:ListItem>String 3</asp:ListItem> 
    </asp:ListBox><br /> 

次に、あなたがあなたのプライベート変数をロードするために、このようなコードを使用する可能性があります:

 List<String> values = new List<String>(); 

     foreach (ListItem item in ListBox1.Items) 
     { 
      values.Add(item.Value.ToString()); 
     } 

あなたはPage_Loadの中でこれを行う場合は、おそらく唯一のしたいと思うタグはソースビューで、このようになります。初期ロード時に実行します(つまり、ポストバックではありません)。一方、使用方法によっては、values変数を宣言して初期化する代わりに、ListBox1.Itemsコレクションを使用するだけで済みます。

これは宣言的に行うことはできません(実行時までリストがインスタンス化されないため)。私はあなたが探しているものだと思い

関連する問題