使用相同的值填充多个文字

时间:2009-05-12 16:40:28

标签: asp.net controls literals

我在页面上有多个文字。例如,

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

我在一个页面上有大约10个,并希望用相同的值填充它们。如果没有引用每个控件的id,有没有一种好方法呢?

5 个答案:

答案 0 :(得分:11)

创建一个包含要显示的值的公共属性,并在aspx中使用

<%= propertyName %>

您想要显示值的任何地方。

答案 1 :(得分:0)

如果您正在使用资源文件,则可以将meta:resourcekey属性设置为所有10个属性的相同值。

答案 2 :(得分:-1)

我看到它完成的唯一方法是使id成为一个可循环的名称(例如Label1 - Label10)并循环引用id。但我们并没有为另一种解决方案而努力!

答案 3 :(得分:-1)

Literals是否位于单个Container(例如,Panel)中,或者它们是否在页面上乱七八糟?如果它们位于一个不包含太多其他非相关控件的单个容器中,那么就像循环访问Container的Controls集合一样简单。

是的,我很清楚Page也是一个容器,但循环浏览页面中的所有控件几乎总是非常低效。我根本不推荐它。

答案 4 :(得分:-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";
} 

如果它们的命名方式不同,您可以将标签名称粘贴在数组中并循环显示,而不是使用10个显式.Text =语句。 e.g。

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";
}