asp.net - 重构设计模式 : displaying/hiding different combinations of controls based on state

标签 asp.net vb.net design-patterns

假设您有控件 A、B、C、D 和 E,它们都具有 Visibility 属性。您还有状态 1、2、3、4、5 和 6,其中将显示控件的各种组合。

目前这是由每个状态的 switch 语句处理的:即

Select Case PageState
    case "1"
      a.visible = false
      b.visible = true
      c.visible = false 
      d.visible = true
      e.visible = false
   case "2"
      a.visible = true
      b.visible = true
      c.visible = false 
      d.visible = true
      e.visible = false
  case ... 
 End Select

您可以想象,这会很痛苦,因为每个状态都需要为每个控件显示/隐藏语句。我如何重构它以便添加控件和/或状态变得微不足道?

我的第一直觉是扩展控件并添加它应该显示的状态集合,但这听起来有点矫枉过正。

编辑 我在我的问题中故意含糊其词,以防这有其他影响。在我当前的实例中,有问题的“控件”是 ASP 面板。这会改变什么吗?

最佳答案

使用 State Pattern

关于asp.net - 重构设计模式 : displaying/hiding different combinations of controls based on state,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912437/

相关文章:

c# - 如何根据经纬度按半径搜索?

asp.net - PipelineStepManager.ResumeSteps中的NullReferenceException

mysql - 发生类型为 'System.NullReferenceException' 的未处理异常

WPF MVVM : View information in the model

javascript - 你如何为你的 JavaScript 建模?

asp.net - 使用 asp.net mvc 的 API 身份验证选项

asp.net - 如何让 Visual Studio 停止向我的项目名称添加无用的数字?

vb.net - 使用 VB.Net 获取 IP 地址、子网、默认网关、DNS1 和 DNS2

sql - 如何让 INotifyPropertyChanged 从存储在 SQL 中的列表中更新绑定(bind)项目?

java - 灵活的界面设计模式