在我的母版页中有一行
<div class ="breadcrumbs" runat="server"><%= SitePath()%></div>
SitePath() 涉及一个自定义类,该类基于静态站点地图和动态生成的页面的组合构建导航元素。它返回自定义面包屑导航元素的 html。
这是我后面的代码中的 SitePath() 代码
public string SitePath()
{
BreadCrumbNav breadNav = new BreadCrumbNav();
breadNav.divClass = ".dv";
breadNav.homeTitle = "ABC Home";
return breadNav.Build();
}
我希望能够从我的动态页面中覆盖它,以便我可以添加到路径中。例如……
public override string SitePath()
{
BreadCrumbNav breadNav = new BreadCrumbNav();
breadNav.divClass = ".dv";
breadNav.homeTitle = "ABC Home";
breadNav.AddPage("Cooking Equipment", "PathyGoodness/Cooking+Equipment.ASPX");
breadNav.AddPage("Toasters", "PathyGoodness/Cooking+Equipment/Toasters.ASPX");
return breadNav.Build();
}
有没有一种方法可以将母版页方法纳入范围,以便我可以覆盖它们——或者我是否需要以不同的方式解决这个问题?感觉就像我错过了一些非常明显的东西,但我似乎被卡住了。
感谢您的帮助!
最佳答案
由于母版页实际上并没有被继承,而是被用作模板,所以这不是直接可能的。
您可以尝试其他一些方法:
首先,将它放在 ContentPlaceholder 中,并仅在必要时在您的各个页面的 ASPX 标记中覆盖它。
一种更复杂的方法是为您的所有页面创建一个接口(interface)以继承该接口(interface)以保证它们具有 SitePath() 方法。相反,在 页面 上从 Master 调用该方法,在那些不“覆盖”行为的页面中,只需调用 Master。在其他情况下,将您的特定实现添加到该方法,瞧! (我想你也可以使用一个抽象的 BasePage 类来从那个方法调用 Master)
关于c# - 覆盖 ASP.net 中的母版页功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266459/