如何判断控件或控件界面是否可由用户编辑?

时间:2010-12-01 19:41:18

标签: c# asp.net vb.net controls

我正在遍历一系列控件,需要知道哪些控件最终用户有能力(通过JavaScript或直接)更改返回的值。我在哪里可以找到这样的清单?

到目前为止,我有这个:

Private Function IsEditableControl(ByVal control As Control) As Boolean
    Return TypeOf control Is IEditableTextControl _
     OrElse TypeOf control Is ICheckBoxControl _
     OrElse GetType(ListControl).IsAssignableFrom(control.GetType()) _
     OrElse GetType(HiddenField).IsAssignableFrom(control.GetType())
End Function

2 个答案:

答案 0 :(得分:3)

我很确定您只需要知道该控件是否实现了IPostBackDataHandler

Public Shared Function IsControlEditable(ByVal ctrl As Control) As Boolean
    Return TypeOf ctrl Is IPostBackDataHandler
End Function

“如果您想要设计服务器控件以检查客户端发回服务器的表单数据,则必须实现IPostBackDataHandler接口。此接口定义的合同允许服务器控件确定是否它的状态应该由于回发而改变,并提出适当的事件。“

这些是实现它的类:

  • CheckBox
  • CheckBoxList
  • DropDownList
  • HtmlInputCheckBox
  • HtmlInputFile
  • HtmlInputHidden
  • HtmlInputImage
  • HtmlInputRadioButton
  • HtmlInputText
  • HtmlSelect
  • HtmlTextArea
  • ImageButton
  • ListBox
  • RadioButtonList
  • TextBox

检查实现IPostBackDataHandler的一大优势是,您的功能在将来也可以使用(带有将添加到框架的控件)和第三方控件。

答案 1 :(得分:0)

这是您必须使用的方法,但无法获得完整的控件列表,尤其是当您考虑潜在的第三方控件时。基本上,将您正在考虑的其他控件添加到该列表中...上面的两个接口非常适合消除一系列控件......