c# - 覆盖 ASP.net 中的母版页功能

标签 c# asp.net master-pages

在我的母版页中有一行

<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/

相关文章:

c# - EF,如何有条件地包含与另一个属性的值相关的导航属性?

css - 如何在没有 runat ="server"的情况下向后面的 asp.net 代码中的 div 添加样式

c# - 对母版页和页面内容使用相同的 CSS 文件

asp.net - 具有 ASP.NET 母版页的事件和委托(delegate)

c# - 如何从 DbContext 获取所有 DbSet

c# - 从位图中获取 ImageSource?

c# - 如何将行动态添加到 asp.net 表中?

asp.net-mvc - ASP.NET MVC 母版页 : "' Model' is not a member of 'System.Web.UI.Page' "

c# - 关于 c# lists 发送或返回它?

javascript - 呈现后的母版页控件 Id