【问题标题】:Converting ASP Web Form to User Control将 ASP Web 窗体转换为用户控件
【发布时间】:2009-11-09 17:07:03
【问题描述】:

我有一个名为 Search.aspx 的 Web 表单页面。我需要在其他地方呈现表单,所以我想将 Web 表单转换为用户控件,但我的 Search.aspx.cs 继承了一个自定义 Page 类,该类继承了 System.Web.UI.Page。由于我的 C# 不支持多重继承,因此我无法在我的用户控件搜索类 (Search.ascx.cs) 类中继承我的自定义 Page 类和 System.Web.UI.UserControl 类。

我想知道是否有办法解决这个问题,而不必为 UserControl 创建第二个自定义页面类。

提前致谢。

【问题讨论】:

    标签: c# .net asp.net user-controls webforms


    【解决方案1】:

    搜索表单需要从继承的自定义 Page 类中获得什么?您可以设计您的搜索表单,使其只是一种输入形式和公开输入值的公共属性。如果没有关于自定义 Page 类提供什么价值的更多信息,很难说最佳答案是什么。通常,控件不需要对其父页面了解太多。

    【讨论】:

      【解决方案2】:

      取决于架构的其余部分。

      最简单的方法是将继承更改为 UserControl。如果您的自定义 Page 基类中缺少某些方法,您可以在 UserControl 自定义基类中复制它们。

      如果您想保持 DRY,请将这些自定义方法重构为一个类,该类将这些方法提供给任何 Page 或 UserControl 类。您将使用组合而不是继承,如果您的继承树变得很深,这可能是更好的选择。

      另一种选择是从您的自定义 Page 类中提取接口。 我认为这不是一个好主意。首先,您很可能不需要将 Pages 和 UserControls 完全相同(多态性)。其次,您仍然必须在两个自定义类中实现接口,因此无论如何您最终都会破坏 DRY。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-16
        相关资源
        最近更新 更多