Pregunta

Tengo varias literales en una página. Por ejemplo,

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

Tengo alrededor de 10 de ellos en una página y quiero llenar todos ellos con el mismo valor. ¿Hay una buena manera de hacer eso sin hacer referencia a la identificación de cada control?

¿Fue útil?

Solución

Crea una propiedad pública que contiene el valor que desea visualizar y en el uso aspx

<%= propertyName %>

en todas partes que desea mostrar el valor.

Otros consejos

Si está utilizando archivos de recursos, se puede establecer la meta:. ResourceKey atributo con el mismo valor para todos los 10 de ellos

La única forma que he visto hacer es hacer que el ID es un nombre de bucle (por ejemplo Label1 - Label10) y el bucle a través referencia a su id. Pero no probamos demasiado difícil para una solución diferente!

¿Son los literales ubicados en un solo recipiente (por ejemplo, un Panel) o están esparcidos sobre la página? Si están en un único contenedor que no contiene demasiados otros controles no relevantes, sería tan simple como un bucle a través colección Controls del contenedor.

Sí, soy muy consciente de que una página es un contenedor, así, pero es casi siempre muy ineficiente para recorrer todos los controles en una página. No lo recomiendo en absoluto.

¿Cómo están sus etiquetas con nombre. Si tienen una convención de nombres comunes, como Label1 - Label10 entonces usted podría hacer

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

Si no están nombrados de manera similar, sólo podía pegar los nombres de etiqueta en una matriz y bucle a través de que en lugar de tener 10 declaraciones explícitas .Text =. por ejemplo.

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";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top