在母版页中多次使用asp:content标记

时间:2020-03-06 14:53:23  来源:igfitidea点击:

我是ASP.NET的新手,并希望为页面标题提供一个asp:content控件,但我希望将该值用于标记和页面标题。当我尝试使用两个具有相同ID的标签进行此操作时,它抱怨说我不能拥有两个具有相同ID的标签。有没有一种方法可以使用contentplaceholders来实现这一目标,如果不是,那么在一页中两次使用单个参数对母版页最简单的方法是什么?

解决方案

标题实际上是内容页面上的一个属性,因此我们可以执行以下操作:

<%@ Page Language="C#" MasterPageFile="~/default.master" Title="My Content Title" %>

在内容页面上。要将其放入标题中,只需在母版页上呈现页面标题即可:

<h1><%= this.Page.Title %></h3>

我看到有人刚刚为这个特定问题提供了(更好)的答案。如果母版页在多个位置(标题除外)具有相同的内容,则可以使用下面的解决方案。

我能想到的最好的解决方案是:

为页面标题添加一个" asp:Label",为要显示文本的第二个位置添加一个" asp:Label"(使用两个不同的ID,例如:" pageTitle"和" sameTitle")

将方法添加到母版页:

public void SetPageTitle(string title)
{
    pageTitle.Text = title;
    sameTitle.Text = title;
}

在内容页面上,调用母版页方法。如果内容页面具有母版页,则它具有称为"母版"的属性。现在,我们可以从内容页面的PageLoad方法中调用SetPageTitle方法:

((MyMasterPage) Master).SetPageTitle("My content page");

我们也可以在母版页中使用" MasterType"指令,请在此处查看更多信息。这样,我们将获得无需强制转换的强类型Master属性:

Master.SetPageTitle("My content page");

问候,
罗纳德

此外,母版页可以具有不同的内容标签(具有不同的ID),如果我们希望页面潜在地更改页面的各个部分,则很好。