从自定义Web服务器控件的属性窗口设置设计时属性会导致/崩溃Visual Studio 2010

时间:2011-11-09 16:08:06

标签: asp.net visual-studio-2010 styles custom-server-controls design-time

正如我的标题所说,我有一个固定的财产崩溃问题。

以下是该方案:

  1. 我创建了一个简单的自定义ASP.Net服务器控件,可以生成一些文本。
  2. 我想为该文本提供设计时属性,以便开发人员可以从属性窗口访问其样式。
  3. 属性窗口中的所有属性都有效,但我创建的类型为System.Web.UI.WebControls.Style的属性除外。
  4. 这是我的财产:

    [Bindable(true)]
    [Category("Appearance")]
    [Description("The style for the header")]
    [Localizable(true)]
    public Style HeaderTextStyle
    {
      get
      {
        Style s = (Style)(ViewState["HeaderTextStyle"] == null ? Styles.defaultHeaderStyle : ViewState["HeaderTextStyle"]);
        return s;
      }
    
      set
      {
        ViewState["HeaderTextStyle"] = value;
      }
    }
    

    哦,Styles.defaultHeaderStyle只是内部类的一个属性,它返回一个新的Style

    让我指出悬挂/崩溃只发生在我改变属性时,因此它不能来自吸气剂。

    我不会粘贴渲染控件,因为即使我没有渲染任何内容也会发生错误。

    导致这种情况的原因是什么?

    谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了问题的答案。

你知道, Style 类是一个具有子属性的属性,它被称为复杂属性复杂属性(具有子属性的属性)需要自定义状态管理才能使用视图状态。 Style类需要设计时属性以在控件的标记内启用持久性。所以我在原帖中写的内容不起作用。

如需完整说明,请访问:Server Control Properties Example from MSDN

我设法使用该示例实现它。我希望这对其他人有用。