我正在使用ASP.NET MVC 2& 3使用aspx View not Razor View,我的问题是:
如何在Site.Master页面中设置标题?我希望每个使用Site.Master页面的页面都可以添加一个主标题,按照页面标题显示如下:“Index -MasterTitle”; “关于-MasterTitle”。
我在Site.Master页面尝试过,但它不起作用:
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />
-MasterTitle
</title>
所以我尝试使用asp:Literal服务器控件:
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />
<asp:Literal runat="server">-MasterTiltle</asp:Literal>
</title>
或者:
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />
<asp:Literal runat="server" Text="-MasterTiltle"></asp:Literal>
</title>
很好,它解决了问题,但后来我想从web.config加载MasterTitle的值,我试试了:
<asp:ContentPlaceHolder ID="TitleContent" runat="server" />
<asp:Literal runat="server">
<%: System.Web.Configuration.WebConfigurationManager.AppSettings["SiteTile"] %>
</asp:Literal>
</asp:Literal>
编译器给我一个服务器控件不能包含子控件,所以我尝试了另一个:
<title>
<asp:ContentPlaceHolder ID="TitleContent" runat="server" />
<asp:Literal ID="ltlTitleBack" runat="server" Text='<%: System.Web.Configuration.WebConfigurationManager.AppSettings["SiteTile"] %>' >
</asp:Literal>
</title>
它的编译器确定但不是我想要的答案因为它显示:“ pagetilte&lt;%:System.Web.Configuration.WebConfigurationManager.AppSettings [”SiteTile“]%&gt; ”
后来我找到了一种方法可以解决这个问题:CodeExpressionBuilder
但我认为这不是一个正确的解决方案因为我应该设置太多与ASP MVC无关的东西。有没有更好的解决方案可以解决这个问题?
注意:
感谢您的帮助。
编辑:其实我想要像web.config这样的东西,所以我可以在服务器运行时更改MasterTitle的值。 :)
答案 0 :(得分:4)
我有类似的问题,这是我必须使用的:
<title>
<asp:ContentPlaceHolder ID="TitleContent" runat="server" /><%= "-MasterTitle" %>
</title>
答案 1 :(得分:1)
您应该将资源文件用于此类文本...
http://msdn.microsoft.com/en-us/library/ms227427.aspx
它不仅可以让您将文本设置在一个漂亮的中心位置,而且它是为了这个目的而设计的 - 它还可以让您以后更轻松地创建您网站的区域语言版本!