偶然之间发现 ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态,测试如下:
ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态?protected void Page_Load(object sender, EventArgs e)
    }
首次加载呈现结果:
ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态?<select size="4" name="ListBox1" ></select>
但是,Postback 之后 attributes就丢失了。
DASM一下 ListItem :
ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态?.method assembly hidebysig instance object 
ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态?        SaveViewState() cil managed

SaveViewState确实没有保存Attributes,只是持久化了Text Value Enabled(这个还是按需)三个属性,
其实,ListItem.Attributes 内部都只是简单的如此实现,并没有像常见的有单独一个私有StateBag _attrState 与 AttributeCollection _attrCol出现,只是如果 _atrrCol如果为null,直接传了局部的StateBag 给AttributeCollection构造函数:
ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态?.method public hidebysig specialname instance class System.Web.UI.AttributeCollection 
ListItem 的 Attributes 在页面回发(PostBack)之间并不会保持视图状态?        get_Attributes() cil managed

补记:
1。其实在 asp.net 1.x 设置ListItem.Attribtues,ListItem 并不会呈现这些 Attributes,已经被视为bug,虽然 2.0 做了改进,依然有问题。参见: ListControl Items and Attributes,
2。之前,为了给Checkbox设置一个客户端可用的 value ,偶尝试自定义了一个

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-07-20
  • 2021-07-17
  • 2021-07-19
  • 2022-12-23
  • 2022-02-22
  • 2021-08-11
猜你喜欢
  • 2021-10-27
  • 2022-12-23
  • 2022-01-10
  • 2021-10-28
  • 2022-12-23
  • 2021-07-08
  • 2022-12-23
相关资源
相似解决方案