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

时间:2008-09-29 18:39:52

标签: asp.net

我是ASP.NET新手,希望对页面标题有一个asp:content控件,但我希望该值用于标记和页眉。当我尝试用两个具有相同id的标签来做这件事时,它抱怨我没有两个具有相同id的标签。有没有办法通过contentplaceholders来实现这一点,如果不是,在一个页面中两次使用单个参数到masterpage的最简单方法是什么?

3 个答案:

答案 0 :(得分:1)

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

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

在内容页面上。要将其转换为标题,请在母版页上呈现页面标题:

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

答案 1 :(得分:0)

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

我能想出的最佳解决方案如下:

为页面标题添加asp:Label,为希望文本显示的第二个位置添加另一个(使用两个不同的ID,例如:pageTitlesameTitle

在母版页中添加方法:

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

在您的内容页面上,调用母版页方法。如果您的内容页面具有母版页,则它具有名为Master的属性。您现在可以通过内容页SetPageTitle方法调用PageLoad方法:

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

您也可以在母版页中使用MasterType指令,查看here了解详情。通过这种方式,您可以获得强类型Master属性,而无需进行强制转换:

Master.SetPageTitle("My content page");

的问候,
罗纳德

答案 2 :(得分:0)

此外,母版页可以有不同的内容标签(具有不同的ID),如果您希望页面可能会改变页面的各个部分,这是很好的。