我需要为我的网页创建常规操作菜单。所有页面都将实现一些基本功能,即向某些表添加新行,编辑它们,调用过滤器。许多页面只需要基本逻辑来运行此功能。但是有些页面会在菜单中为选项实现自己的逻辑。
我想通过使用菜单中的事件来实现这一点。所以我不需要唯一的事件,而是所有页面的一些基本事件处理程序。并且这个处理程序应该以一种可以覆盖的方式构造。问题是我不知道如何为菜单的所有未来用途创建处理程序。在某种程度上听起来有点乌托邦。创建像这样的架构是真的吗?
我想过两种方法:母版页或用户控件。但我真的不知道它是否可能。你觉得怎么样?
UPD:关于基本网页的两个答案都有所提升:你们肯定知道你在谈论什么。谢谢。抱歉,只能选择一次正确答案。
答案 0 :(得分:1)
你真的不应该在页面上不必要地实例化对象,因为这种方法肯定会这样做。
记住这一点,您可以创建一个相关页面继承的基页,这样您就可以访问所需的方法。
MyBasePageClass中创建的方法必须是公共的才能被Default.aspx.cs看到。
答案 1 :(得分:1)
在我的许多应用程序中,如果我具有跨多个页面共享的功能,则使用公共基类。实际上,这并不罕见。
实现可能如下所示:
public class MyApplicationPage : System.Web.UI.Page
{
public virtual void RaiseMyCustomEvent(EventArgs e)
{
}
}
virtual
关键字使该方法可以覆盖。
在我的个人代码中,页面继承可能如下所示:
public partial class MyPage : MyApplicationPage
{
public override void RaiseMyCustomEvent(EventArgs e)
{
// ...
}
}
最后,在我的母版页中,我可能会在方法中找到这样的代码:
if (Page is MyApplicationPage)
{
((MyApplicationPage)Page).RaiseMyCustomEvent(EventArgs.Empty);
}
答案 2 :(得分:0)
我认为“为所有未来用途创建处理程序”听起来很吓人。
我要做的是单独创建页面,并且只有当我识别出一些相同或相似的逻辑时,我才会将其重构为一个单独的类,而这些类可以使用多个表单。
毕竟,代码需要在重用之前使用。