我在页面上有多个文字。例如,
<asp:Literal id="Label1" runat="server" />
我在一个页面上有大约10个,并希望用相同的值填充它们。如果没有引用每个控件的id,有没有一种好方法呢?
答案 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";
}