【问题标题】:how to bind dropdown in 3-tier architecture如何在 3 层架构中绑定下拉菜单
【发布时间】:2011-12-14 02:29:44
【问题描述】:

如何以专业的方式绑定下拉菜单? DropDown组件是否需要传递给BAL(业务访问层)?

请提供一些代码sn-p和参考链接..

【问题讨论】:

  • 这是在什么堆栈上? WPF?表格? ASP.NET?您需要添加更多详细信息才能使这个问题成为可回答的问题。
  • 层是什么?
  • @Boomer:物理层是类,我认为..
  • 你在 PL(表示层)和 BL 之间使用 WCF 或 web 服务吗?
  • @Boomer: 不..我没有使用 WCF 或服务..

标签: c# asp.net data-binding 3-tier


【解决方案1】:

我通常会在我的业务层中有一个方法,它返回一个自定义类列表(例如:对于状态,我将有一个状态类,它具有 ID、名称、代码等公共属性)。然后我将它绑定到下拉列表

            List<State> objLstState =new List<State>();
            objLstState = StateManager.GetStates();  //This method returns a list of States
            if(objLstState!=null && objListState.Count>0)
            {
              dropDownSchoolState.DataSource = objLstState;
              dropDownSchoolState.DataTextField = "Name";
              dropDownSchoolState.DataValueField = "ID";
              dropDownSchoolState.DataBind();
            }

以上代码在我的 UI 层中执行(在 aspx 页面的代码隐藏中)

【讨论】:

    【解决方案2】:

    您可以传递一个包含您的数据的类的数组 .. 该类应该具有公共属性,以便可以访问它们并将其绑定到您的下拉列表 .. 或者您需要将数据绑定到哪个控件

    【讨论】:

      【解决方案3】:

      UI 层必须处理 UI 操作,同样适用于必须处理业务操作的业务层。如果您将 DropDown 对象发送到业务层,您将违反原则,只会使您的代码更混乱、更难维护和更难理解。

      由于 DropDown 控件是专门为 UI 包含的东西,我建议您请求从“业务层”绑定数据并将控件绑定到“UI 层”内的数据。

      简而言之:让层之间的交互处理数据,而不是信息。可视化控件是一种信息,是具有非常特定用途、处理/包含操作、规则的数据聚合。客户列表本身只是客户列表,纯数据,没有任何规则、操作或任何东西。

      【讨论】:

        【解决方案4】:

        不,下拉列表肯定不需要传递到任何较低层,BL 或服务层等较低层最终应由 UI(表示层)调用并使用检索到的数据,可能不依赖于数据库数据访问层中使用的技术或 DAL 逻辑。

        有关示例,请参阅此答案:MVC3 and Entity Framework

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多