none
为什么CheckBox控件没有Value属性? RRS feed

  • 常规讨论

  • 作为HTML input的checkbox有value属性,但是为什么作为Web服务器控件的CheckBox控件没有Value属性呢?

    理解的越多,需要记忆的就越少
    2009年4月2日 7:08
    版主

全部回复

  • 因为设置value的目的是从服务器端知道是谁选中了,而服务器控件CheckBox不用value就可以知道谁选中(Checked属性)了,所以,value属性对服务器控件无意义
    孟宪会
    2009年4月2日 7:14
    版主
  • 有时候需要让CheckBox控件维护一个“值”,这个值和显示的文本不同,就像DropDownList中的选项中的文本和值的关系一样。如果在服务器端判断被选中了就把value取回来。目前如果要做到这点,只能用runat=server的html input的checkbox了。遗憾啊~

    理解的越多,需要记忆的就越少
    2009年4月2日 7:22
    版主
  • 因为CheckBox是为WebForm设计的,而当初WebForm设计为尽量贴近WinForm开发人员的使用习惯,既然WinForm的CheckBox没有Value属性,WebForm的自然也没有。

    如果你一定要保存这样一个值,你可以自己继承自CheckBox类,扩展一个Value属性,重写Render相关方法,把Value写到<input />的value里面,又或者直接存到ViewState里面(如果你不介意浪费一些流量的话)。
    Microsoft ASP.NET MVP
    2009年4月2日 7:58
    版主