【问题标题】:where'd the webcontrol's viewstate go?webcontrol 的 viewstate 去哪儿了?
【发布时间】:2011-08-25 22:44:45
【问题描述】:

TextBoxWebControlControl 具有 ViewState 属性。

那么为什么当我输入“。”时myTextBox 之后的 ViewState 属性没有出现在属性和方法列表中吗?

【问题讨论】:

  • 你为什么要这样做?
  • 不是我想做,只是没看到的时候很惊讶。

标签: c# asp.net controls viewstate web-controls


【解决方案1】:

它用于需要保持视图状态的自定义控件,而不是用于外部修改。这是protected(即只能从派生对象访问)是有原因的。

例如,如果您创建了一个滑块控件来保持其所在位置的视图状态,则需要使用ViewState 属性。但是没有其他任何理由使用滑块控件的视图状态。

【讨论】:

    【解决方案2】:

    您看不到它,因为它受到保护。

    这是元数据中的属性:

    [Browsable(false)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    protected virtual StateBag ViewState { get; }
    

    与 ViewState StateBag 的交互是通过 SaveViewState 和 LoadViewState 方法处理的,这些方法也受到保护并且只能由控件访问。

    您不需要对控件的 ViewState 做任何事情。它会保持自己。但是,您确实可以访问页面上的 ViewState。

    【讨论】:

    • 不,BrowsableAttribute 仅适用于设计师。它是不可见的,因为它是 protected
    • @minitech:谢谢。与 EditorBrowsable 属性混淆。修正了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 2014-03-15
    • 2015-07-17
    • 2012-10-30
    • 2013-05-23
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    相关资源
    最近更新 更多