C# 附加到asp.net母版页中的默认标题
我正在使用MVC向母版页添加一个带有内容占位符的标题。默认MVC母版页模板使用以下代码:C# 附加到asp.net母版页中的默认标题,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我正在使用MVC向母版页添加一个带有内容占位符的标题。默认MVC母版页模板使用以下代码: <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title><asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title> <
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>
当我尝试将默认文本添加到内容持有者的前面时,它不会在最终呈现的页面中显示文本。我试图让页面显示带有附加内容占位符文本的默认标题
示例:(默认文本)(内容占位符文本)
我的页面-关于我们
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>My Page - <asp:ContentPlaceHolder ID="TitleContent" runat="server"/></title>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>
我的网页-
我正在寻找一种方法来实现这一点,而不必使用代码隐藏。有什么想法吗?如果您正在使用MVC,并且正在将某个对象中的标题从控制器传递到页面,我将使用内联代码来显示它 我们使用MVC contrib函数直接从母版页中的视图数据获取类型化数据,因此:
<head>
<title>My Page - <%= ViewData.Get<Model.Page>().Title %></title>
</head>
我的网页-
值得注意的是,我们已经从每个视图中删除了所有代码隐藏文件,我们必须使视图更清晰,我们发现这比在每个视图中使用代码隐藏要好得多。进一步查看后,Phil Haack实际上发布了一篇文章,这是我问题的解决方案。可在以下网址找到 总之,他说,头部呈现的所有内容都呈现为控件,解决上述问题的方法是在标题中放置一个asp文本控件,使其正确生成文本
<%@ Master ... %>
<html>
<head runat="server">
<title>
<asp:ContentPlaceHolder ID="titleContent" runat="server" />
<asp:LiteralControl runat="server" Text=" - MySite" />
</title>
</head>
...
...
看来我们应该使用
<asp:Literal runat="server" Text=" - MySite" />
而不是
<asp:LiteralControl runat="server" Text=" - MySite" />
在文章中提到,因为否则我们会得到“未知服务器标记”错误。为什么
<title>
<asp:ContentPlaceHolder ID="titleContent" runat="server" />
<%= "- My Site" %>
</title>
同样有效。没有麻烦吗?我更喜欢用这个:
<title>Site Name - <%=Page.Title%></title>
站点名称-
比使用文字控件干净得多。从head标记中删除runat=“server”时会发生什么?就我个人而言,我会在控制器操作中设置类似ViewData[“PageTitle”]的内容。从我测试以找到可能的解决方案时起,无论是否存在runat=“server”标记,它的行为似乎都是相同的。这会解决问题,但我正在尝试找到一个可能包含文本“我的页面”的解决方案仅在母版页上。这样标题就可以更改,而不需要在每个视图上更改。感谢您的响应。正如Alexander所提到的,这会导致未知的服务器标记异常。请尝试使用“Literal”而不是“LiteralControl”