在asp.net主页中附加到默认标题

Aar*_*ron 4 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>
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
</head>
Run Code Online (Sandbox Code Playgroud)

当我尝试将默认文本添加到内容持有者的前面时,它不会在最终呈现的页面中显示文本.我试图让页面显示一个带有附加的contentplaceholder文本的默认标题.

示例:(
默认文本)(ContentPlaceHolder文本)
我的页面 - 关于我们

<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>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来实现这一点,而无需使用代码.有任何想法吗?

Ale*_*yev 9

看来我们应该用

<asp:Literal runat="server" Text=" - MySite" />
Run Code Online (Sandbox Code Playgroud)

代替

<asp:LiteralControl runat="server" Text=" - MySite" />
Run Code Online (Sandbox Code Playgroud)

在文章中提到,因为否则我们会收到"未知服务器标记"错误.


Aar*_*ron 7

在进一步观察之后,Phil Haack实际上发表了一篇文章,这是我的问题的解决方案.它可以在Haacked找到.

总而言之,他说在头部渲染的所有东西都被渲染为一个控件,上面我的问题的解决方法是在标题中放置一个asp文字控件,让它正确生成文本.

<%@ Master ... %>
<html>
<head runat="server">
  <title>
    <asp:ContentPlaceHolder ID="titleContent" runat="server" /> 
    <asp:LiteralControl runat="server" Text=" - MySite" />
  </title>
</head>
...
Run Code Online (Sandbox Code Playgroud)

  • 尝试使用"Literal"而不是"LiteralControl" (4认同)