Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 附加到asp.net母版页中的默认标题_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

C# 附加到asp.net母版页中的默认标题

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> <

我正在使用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>

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

示例:
(默认文本)(内容占位符文本)
我的页面-关于我们

<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”