ページに複数のリテラルがあります。たとえば、複数のリテラルを同じ値で塗りつぶす
<asp:Literal id="Label1" runat="server" />
私は1ページに約10個あり、すべて同じ値で入力したいとします。各コントロールのIDを参照せずにこれを行う良い方法はありますか?
ページに複数のリテラルがあります。たとえば、複数のリテラルを同じ値で塗りつぶす
<asp:Literal id="Label1" runat="server" />
私は1ページに約10個あり、すべて同じ値で入力したいとします。各コントロールのIDを参照せずにこれを行う良い方法はありますか?
あなたが表示し、値を表示したいどこでもASPXに
<%= propertyName %>
を使用する値を保持しているパブリックプロパティを作成します。
私はそれが終わったのを見てきた唯一の方法は、idをループ可能な名前(Label1 - Label10など)にして、idを参照してループさせることです。しかし、私たちは別の解決策にはあまりにも挑戦しませんでした!
リソースファイルを使用している場合、meta:resourcekey属性を10個すべての同じ値に設定できます。
リテラルは、単一のコンテナ(たとえば、パネル)に配置されているのか、ページについて散らばっていますか?あまり関連のない他のコントロールが含まれていない単一のコンテナ内にある場合は、Container's Controlsコレクションをループするだけで簡単です。
はい、もちろん、Pageはコンテナでもあることはよく知っていますが、ページ内のすべてのコントロールをループするのは非常に非常に効率的です。私は全くそれをお勧めしません。
ラベルにはどのように名前が付けられていますか?彼らは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";
}