要在管理页面的页面标题,我有我在哪里取的ContentPlaceHolder母版页。

  <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />  </title>

和每一页我写上

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">Some Title Here
</asp:Content>

现在我的客户问我要删除标题上的所有网页,并保持它的母版页上,但不是所有的页面和硕士页面上删除内容占位符代码,以便在未来如果有需求,然后我们可以将它们插入数据。 所以我的问题是,没有母版页和页面上删除它们我不能够把标题上主page.So我该如何处理这种情况呢?

有帮助吗?

解决方案

由于球员..我得到溶液

如果您想从母版页中设置标题的一部分。例如,您可能希望每一个页面的标题带有后缀,以结束“ - mysite的。”

如果您试试这个(注意 - MySite的上涨了):

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> - MySite
  </title>
</head>

和运行页面,你会发现 - 的MySite不会被渲染。这似乎是HtmlHead控制的怪癖。这是因为控制HtmlHead内的标题标记是现在自身的控制。

的解决方法是非常简单的。你的文字添加到LiteralControl像这样。

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:Literalrunat="server" Text=" - MySite" />
  </title>
</head>

其他提示

如果你想有一个很好的解决方案,以重写网页标题:

创建一个类你自己从System.Web.Mvc.ViewPage继承。

让您的视图页面从该类继承:

写的Page_Load处理程序在新的类,它是这样的:

Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
   Me.Title = "Company Name | " + Page.Title
End Sub

您也不必内容占位符更改标题。在标签已经中用runat服务器控制。设置在页面加载(或更早事件)的Page.Title工作得很好。

您也可以把中用runat服务器脚本标签在你的母版页也完成这个任务。

最简单的方法:

地方移动当前ContentPlaceHolder到HTML,并在<asp:PlaceHolder runat="server" visible="false"/>包裹。当你将需要它以后,只需移动的ContentPlaceHolder回来了。

使用母版页上OnPreRender事件设置标题,压倒一切的是什么已经被设置在每一页上。

为什么不添加属性可见= false以母版页的ContentPlaceHolder

我觉得这是处理你的情况最简单的方法。

快乐编码

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top