質問

私は、ページ上の複数のリテラルを持っています。たとえば、

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

私は1つのページに約10これらのを持っているし、同じ値でそれらのすべてを満たしたいです。各コントロールのIDを参照せずにそれを行うための良い方法はありますか?

役に立ちましたか?

解決

表示したい値を保持しているパブリックプロパティを作成し、ASPXの使用中の

<%= propertyName %>

どこでもあなたは値を表示する。

他のヒント

それらのすべて10のために同じ値にたResourceKey属性

:あなたは、リソースファイルを使用している場合は、

、あなたはメタを設定することができます。

IDを参照して、ループ -

私はそれが行わ見てきた唯一の方法は、idはループ名(Label10例えばLabel1に)だ作りです。しかし、我々は別の解決策のためにあまりにもハードしようとしなかった!

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

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

という名前のラベルがある方法。彼らは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";
} 
彼らは同じような名前いない場合は、

、あなただけの代わりに10個の明示的な.Text =文を持つことによるアレイと、ループ内のラベル名を貼り付けができます。例えばます。

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";
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top