【发布时间】:2012-04-03 17:12:38
【问题描述】:
我的解决方案有几个不同的原因,我现在不会讨论,它有几个不同的 ASP.NET Web 应用程序项目,所有这些项目都将共享母版页的几个功能。为了实现这一点,我有一个所有 Web App 项目都引用的单独的类库项目,其中包括一个继承自 System.Web.UI.MasterPage 的 BaseMasterPage 类。
我的意图是让所有 Web 应用程序的所有母版页都从 BaseMasterPage 继承,这对于常规属性和方法工作正常,但我现在正尝试将我创建的服务器控件添加到 BaseMasterPage 并将其显示在实际的母版页,但我不知道如何使 BaseMasterPage 中的属性在实际母版页上可见,而没有很多丑陋的代码。
有人对如何做到这一点有任何想法吗?
如果有帮助,这是我的 BaseMasterPage 的 sn-p(而 HierarchicalMenu 是我的自定义服务器控件):
public class BaseMasterPage : MasterPage
{
private HierarchicalMenu _leftMenu;
public HierarchicalMenu LeftMenu
{
get
{
return _leftMenu;
}
set
{
_leftMenu = value;
}
}
}
如果我将以下内容添加到我的 Site.master 页面,则会显示 HierarchicalMenu,但它不是 BaseMasterPage 中的属性声明的:
<%@ Master Language="C#" AutoEventWireup="true" Inherits="BaseMasterPage" %>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<body>
<form runat="server">
<cc1:HierarchicalMenu ID="LeftMenu" runat="server" MenuName="Left Menu" />
</form>
</body>
</html>
我真正希望它不必像我在上面那样直接在我的 Site.master 上添加 HierarchicalMenu,并让它成为 BaseMasterPage 中的那个。
谢谢!
【问题讨论】:
-
其实我刚刚发现,当我在 BaseMasterPage 的代码上操作 LeftMenu 时,LeftMenu我的 Site.master 已更新,因此添加到 Site.master 的 HierarchicalMenu 以某种方式链接到 BaseMasterPage 中的同名属性。
标签: asp.net inheritance master-pages