利用 appSettings 设置站点统一的网页标题

作者:vkvi 来源:ITPOW(原创) 日期:2009-11-28

网页标题一般包含站点名称,通常情况下,站点名称是直接写在 <title> 标签中的,这样如果网站名称变了后,有多少网页就要改多少网页,不是很方便。可以将站点名称存储在 web.config 的 appSettings 中。

web.config

<appSettings>
    <add key="SiteName" value="ITPOW"/>
</appSettings>

.aspx 页面

<title><asp:Literal runat="server" Text='<%$ AppSettings:SiteName %>'></asp:Literal></title>

为便于后面描述,我们把上述的代码称为“代码一”。其输出的 HTML 为:

<title>
 ITPOW
</title>

或者您也想除了站点名称,还得加上网页标题,形如:“用户管理 - ITPOW”、“文档管理 - ITPOW”…… 

要实现上面的效果,如下做法是不对的:

<title>用户管理 - <asp:Literal runat="server" Text='<%$ AppSettings:SiteName %>'></asp:Literal></title>

为便于后面描述,我们把上述的代码称为“代码二”。运行上述代码后,查看源码,您会发现“用户管理 - ”并没有在 <title> 中出现。

<title><asp:Literal runat="server" Text='用户管理 - <%$ AppSettings:SiteName %>'></asp:Literal></title>

上述代码是错误的用法,运行上述代码后,查看源码,您会发现结果为:用户管理 - <%$ AppSettings:SiteName %>。

您应该这样做:

<title><asp:Literal runat="server" Text="用户管理 - "></asp:Literal><asp:Literal runat="server" Text='<%$ AppSettings:SiteName %>'></asp:Literal></title>

为便于后面描述,我们把上述的代码称为“代码三”。

几点解释

为什么“代码一”运行后,<title> 标签不在一行,而是占据了几行呢?

这是由于 <head> 标签有 runat="server" 属性的原因,如果去掉 header 的 runat="server",就不会自动分隔为几行了。

为什么“代码二”的“用户管理 - ”显示不出来?

这是由于 <head> 标签有 runat="server" 属性的原因,如果去掉 header 的 runat="server",就会显示了,此时效果和代码三相同。

同理,如果是 <body> 中的“用户管理 - <asp:Literal runat="server" Text='<%$ AppSettings:SiteName %>'></asp:Literal>”,其“用户管理 - ”也会显示出来。

也就是说如果 <head> 有 runat="server",并且 <title> 中有服务器端控件(比如:asp:Literal),那么,直接写在 <title> 中的文本就显示不出来。

相关阅读

相关文章