我使用 ASP.NET MVC 2 和 3 与 aspx View 而不是 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 <%: System.Web.Configuration.WebConfigurationManager.AppSettings["SiteTile"] %>"
后来我在这里找到了可以解决这个问题的方法:CodeExpressionBuilder
但我认为这不是一个正确的解决方案,因为我应该设置太多与 ASP MVC 无关的内容。有没有更好的方案可以解决这个问题?
注意:
- 我不想在除 Site.Master 页面之外的每个页面中设置 MasterTitle 的值,这是一种愚蠢的方法。
- 我不想在 Controller 或 Action 或 Model 中设置 MasterTitle 的值,这是不对的。
- 我不想通过 ViewData 设置 MasterTitle 的值。
- 我不想使用 CodeExpressionBuilder .
- 我不使用 Razor View。
感谢您的帮助。
编辑:实际上我想要像 web.config 这样的东西,这样我就可以在服务器运行时更改 MasterTitle 的值。 :)
最佳答案
我遇到了类似的问题,这是我必须使用的:
<title>
<asp:ContentPlaceHolder ID="TitleContent" runat="server" /><%= "-MasterTitle" %>
</title>
关于asp.net-mvc - 如何使用 ASP.NET MVC 2 和 3 在 Site.Master 页面中设置标题的全局文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6291131/