C# 创建服务器控件的正确模式?

C# 创建服务器控件的正确模式?,c#,asp.net,custom-server-controls,composite-controls,C#,Asp.net,Custom Server Controls,Composite Controls,我正在创建一个服务器控件(从CompositeControl继承) 该控件由几个数据绑定下拉列表(以及一些文本框等)组成 下拉列表形成一个层次结构,因此相互依赖。。。乙二醇 国家 -德勒县 --城市 当选择DDLContry时,这将刷新DDLContry的列表。。。城市等等 我想访问控件中ddlCountry的值,这样我就可以相应地设置第二个ddl(ddlCounty)的数据源, 但是在CreateChildControls()中,viewstate似乎还没有将DDLControls用户选择加载

我正在创建一个服务器控件(从CompositeControl继承)

该控件由几个数据绑定下拉列表(以及一些文本框等)组成

下拉列表形成一个层次结构,因此相互依赖。。。乙二醇

国家

-德勒县

--城市

当选择DDLContry时,这将刷新DDLContry的列表。。。城市等等

我想访问控件中ddlCountry的值,这样我就可以相应地设置第二个ddl(ddlCounty)的数据源, 但是在CreateChildControls()中,viewstate似乎还没有将DDLControls用户选择加载到控件中,因此我得到一个空字符串

我还需要将这些ddl值作为公共属性提供

由于使用了ReCreateChildControls()等,这变得相当混乱。。。我肯定这是错的

我的问题: 是否有人可以建议创建此服务器控件要遵循的正确模式/规则集

乙二醇

  • 初始化控件OnInit
  • 在线数据绑定
  • 将EnsureChildControls()放在任何属性的开头:get或set
  • 我假设必须有一个正确的方法来实现这一点,但是找不到任何文档或示例来让它像您期望的标准控件那样工作


    谢谢

    这是webforms吗?如果是这样的话,只需在ddlCountry的onSelectedIndexChanged(我认为它被称为)事件中填充ddlCounty数据源,同样地,在ddlCounty上填充ddlCity。我不会因为这样的事情去CreateChildControls或类似的网站。谢谢Allan,是的,这是webforms。。。我会这样做的:ddl的。提出这个问题的原因更多地集中在服务器控件的构造iteslf。。。尝试为整个控件查找模板/模式。我尝试了一些尝试和错误,关于在应用viewstate后从控件中检索数据,但我似乎无法得到一致的结果。。。并且具有控件维护的正确属性,并且在包含该控件的页面加载事件中可用。动态控件在webforms中总是令人讨厌的,所以我尽量避免:)