我正在尝试创建一个通用类,其中所有的ASP.Net页面都继承自此,因此我可以跨多个页面共享函数。
为此,我将创建一个继承自System.Web.UI.Page的新类(内容页面需要继承此内容),然后我的内容页面将继承新创建的类。
我的问题是Masterpage继承自System.Web.UI.Masterpage。
如何设置我的项目以便内容页面和母版页以及使用普通类的功能?
请不要犹豫,问我是否不清楚!
谢谢!
电子
答案 0 :(得分:2)
首先,不确定为什么要这样做。通过它们的功能,Master Pages应该主要具有您的Pages不应该关注的功能,反之亦然。如果你只需要一些不依赖页面的常用功能,你可以创建一个静态类(很像Math)或者你可以在MasterPage和Page自定义基类中实现的某种辅助类。
但你唯一真正的选择是创建两个自定义基类。一个继承MasterPage而另一个继承自Page。两者都需要实现您创建的接口ICommon。然后创建另一个静态类,您可以将所有函数代理到。
令人讨厌的解决方案,但它是我唯一能想到的。
修改强>
这是一个更好的解决方案
public class Helper
{
public static int getUserID(...)
{
// ... Code to get User ID
}
}
在您的主页和页面中使用
int UserID = Helper.getUserID(...);
答案 1 :(得分:0)
我认为你不能这样做,MasterPage继承UserControl,Page继承TemplateControl。就像斯宾塞说的那样,我只想创建一个Helper / Utility类。
答案 2 :(得分:0)
我知道现在为时已晚,但只想分享一些人可能会遇到同样的问题。 这是使用扩展函数的示例代码:
public static void Commonfunction(this TemplateControl ctl)
{
// Your Code here
}
将此功能称为
this.Commonfunction();
在任何页面或母版页中。
答案 3 :(得分:0)
虽然这个问题已经有5年了,但我想为未来的读者分享另一种选择。
根据您的解释,我认为您所谓的MasterPage
就像一个框架,例如在屏幕的一侧加载内容页面。
如果我是对的,您可以使用您的功能创建一个BaseMasterPage
课程,然后为您的内容页面创建一个MasterPage
(您也可以使用它来放置当前的一些代码)页)。显然,下一步是让您当前的MasterPage
,以及ContentMasterPage
继承此BaseMasterPage
。
因此,您最终可以在框架页面和内容页面中使用LoggedUser
属性。