3

ページに複数のリテラルがあります。例えば、

<asp:Literal id="Label1" runat="server" />

1 ページに約 10 個あり、すべて同じ値で埋めたいと考えています。各コントロールのIDを参照せずにそれを行う良い方法はありますか?

4

5 に答える 5

11

表示する値を保持するパブリック プロパティを作成し、aspx で使用します。

<%= propertyName %>

値を表示したい場所ならどこでも。

于 2009-05-12T16:43:31.267 に答える
0

リソース ファイルを使用している場合は、meta:resourcekey 属性を 10 個すべての同じ値に設定できます。

于 2009-05-12T16:46:58.217 に答える
-1

あなたのラベルはどのように命名されていますか。Label1 - Label10 のような共通の命名規則がある場合は、次のことができます

for(int i = 1; i <= 10; i++)
{
    Literal l = Page.FindControl(string.Format("Label{0}", i)) as Literal
    if(l != null)
        l.Text = "Whatever";
} 

.Text =名前が似ていない場合は、10 個の明示的なステートメントを使用する代わりに、ラベル名を配列に貼り付けてループすることができます。例えば

string [] litNames = new string [] { "litFirst", "otherLit", "someOtherVar" }

foreach(string s in litNames)
{
    Literal l = Page.FindControl(s) as Literal
    if(l != null)
        l.Text = "Whatever";
}
于 2009-05-12T16:51:07.430 に答える
-1

私が見た唯一の方法は、ID をループ可能な名前 (例: Label1 - Label10) にし、ID を参照してループすることです。しかし、私たちは別の解決策のために一生懸命努力しませんでした!

于 2009-05-12T16:41:57.913 に答える
-1

リテラルは単一のコンテナ (たとえば、パネル) に配置されていますか、それともページに散らばっていますか? 関連性のない他のコントロールがあまり含まれていない単一のコンテナにある場合は、コンテナの Controls コレクションをループするのと同じくらい簡単です。

はい、ページもコンテナであることは十分承知していますが、ほとんどの場合、ページ内のすべてのコントロールをループするのは非常に非効率的です。まったくお勧めしません。

于 2009-05-12T16:47:15.893 に答える