C#List <linkbutton>集合cssclass未应用

时间:2016-02-18 15:42:15

标签: c# asp.net collections

我想要操纵cssclass属性的一对LinkBut​​tons。

之前我单独使用每个LinkBut​​ton来更改cssclass,它在回发时完美运行。例如。 lnkbtnHome.CssClass = "tab";

但随着时间的推移,项目增加了,所以我认为这可能是更好的方法,我决定使用Listcollection并使用foreach循环来做同样的事情。
以下是我目前使用的代码。

默认情况下(页面加载时)第一个按钮具有不同的类tabsel,我想通过将类设置为tab来重置所有按钮的类。经过调试,我可以看到cssclass被修改但它没有在浏览器中更改。

我错过了什么吗?

声明:

static List<LinkButton> lnklist;

在PageLoad:

lnklist = new List<LinkButton>();
lnklist.Add(lnkbtnHome);
lnklist.Add(lnkbtnSubject);
lnklist.Add(lnkbtnReport);

回发后:

foreach (var lnkbtn in lnklist){
    lnkbtn.CssClass = "tab";
}

1 个答案:

答案 0 :(得分:2)

从不在ASP.NET中使用静态字段!

你:

  

我使用静态来避免在回发时丢失项目。

但这是HTTP的本质。它是一种无状态协议。您应该以与ASP.NET相同的方式重新创建每个回发的所有控​​件。否则,由于ASP.NET是一个多线程环境,因此您很容易受到各种问题的攻击。你可以将它存储在Session中,但我会反对它。 LinkButton是一个webcontrol,需要成为当前页面控件集的一部分。此页面将在其生命周期结束时销毁。