【问题标题】:Masterpage and Content pages inheriting from a single class从单个类继承的母版页和内容页
【发布时间】:2009-07-01 17:23:55
【问题描述】:

我正在尝试创建一个通用类,我的所有 ASP.Net 页面都从其中继承,以便我可以跨多个页面共享功能。

为此,我将创建一个继承自 System.Web.UI.Page 的新类(内容页面需要继承它),然后我的内容页面将继承新创建的类。

我的问题是 Masterpage 继承自 System.Web.UI.Masterpage。

如何设置我的项目,以便内容页和母版页都使用通用类的功能?

如果我不清楚,请不要犹豫!

谢谢!

E

【问题讨论】:

    标签: asp.net inheritance master-pages


    【解决方案1】:

    首先,不确定您为什么要这样做。根据它们的功能,母版页应该主要具有您的页面不应该关心的功能,反之亦然。如果您只需要一些不依赖于页面的通用功能,您可以创建一个静态类(很像 Math)或某种可以在 MasterPage 和 Page 自定义基类中实现的帮助器类。

    但您唯一真正的选择是创建两个自定义基类。一个继承 MasterPage,另一个继承 Page。两者都需要实现您创建的接口 ICommon。然后创建另一个可以代理所有函数的静态类。

    很糟糕的解决方案,但这是我能想到的唯一一个。

    编辑

    这里有一个更好的解决方案

    public class Helper
    {
       public static int getUserID(...)
       {
          // ... Code to get User ID
       }
    }
    

    在您的母版页和页面中使用

    int UserID = Helper.getUserID(...);
    

    【讨论】:

    • 我想这样做是因为我有许多功能和数据希望能够跨网页使用。如果没有这个,我将不得不在我想要获取用户 ID 的每个页面上创建一个函数 getUserID。对于页面特定的功能,我会将它们留在 CodeBehind 文件中。
    • 由于 getUserID 不依赖于页面,您只需创建一个他们都可以访问的静态类。我会编辑我的帖子。
    【解决方案2】:

    我认为你不能这样做,MasterPage 继承 UserControl,Page 继承 TemplateControl。就像 Spencer 说的,我只会创建一个 Helper/Utility 类。

    【讨论】:

      【解决方案3】:

      我知道为时已晚,但只是想分享一些可能会遇到相同的情况。 这是一个使用扩展函数的示例代码:

      public static void Commonfunction(this TemplateControl ctl)
      {
            // Your Code here
      }
      

      将此函数称为

      this.Commonfunction();
      

      在任何页面或母版页中。

      【讨论】:

        【解决方案4】:

        虽然这个问题是 5 年前的问题,但我想为未来的读者分享另一个选择。

        根据您的解释,我想您所说的MasterPage 就像一个框架,例如将内容页面加载到屏幕的一侧。

        如果我是对的,您可以使用您的功能创建一个BaseMasterPage 类,然后为您的内容页面创建一个MasterPage(您也可以使用它来放置当前页面中的一些代码)。下一步显然是让你当前的MasterPage 和假设ContentMasterPage 都继承自这个BaseMasterPage

        因此,通过这种方式,您最终可以在框架页面和内容页面中都拥有 LoggedUser 属性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-02-12
          • 2020-04-01
          • 2014-02-02
          • 1970-01-01
          • 2013-02-08
          相关资源
          最近更新 更多