Заполнение нескольких литералов одним и тем же значением - PullRequest
3 голосов
/ 12 мая 2009

У меня есть несколько литералов на странице. Например,

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

У меня около 10 из них на одной странице, и я хочу заполнить их одинаковым значением. Есть ли хороший способ сделать это без ссылки на идентификатор для каждого элемента управления?

Ответы [ 5 ]

11 голосов
/ 12 мая 2009

Создайте открытое свойство, содержащее значение, которое вы хотите отобразить, и в aspx используйте

<%= propertyName %>

везде, где вы хотите отобразить значение.

0 голосов
/ 12 мая 2009

Как называются ваши ярлыки? Если у них есть общее соглашение об именах, такое как 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";
}
0 голосов
/ 12 мая 2009

Литералы расположены в одном контейнере (например, в панели) или они завалены страницей? Если они находятся в одном контейнере, который не содержит слишком много других не относящихся к делу элементов управления, это будет так же просто, как выполнить цикл по коллекции элементов управления контейнера.

Да, я хорошо знаю, что Страница также является Контейнером, но почти всегда очень неэффективно перебирать все элементы управления на Странице. Я бы не рекомендовал это вообще.

0 голосов
/ 12 мая 2009

Если вы используете файлы ресурсов, вы можете установить для атрибута meta: resourcekey одинаковое значение для всех 10 из них.

0 голосов
/ 12 мая 2009

Единственный способ, которым я видел это, - это сделать id идентифицируемым именем (например, Label1 - Label10) и циклически обращаться к идентификатору. Но мы не слишком старались найти другое решение!

...