标题上ASP.Net MVC母版页
-
19-09-2019 - |
题
要在管理页面的页面标题,我有我在哪里取的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
我觉得这是处理你的情况最简单的方法。
快乐编码