【问题标题】:How to set the global text of title in Site.Master page using ASP.NET MVC 2 & 3?如何使用 ASP.NET MVC 2 & 3 在 Site.Master 页面中设置标题的全局文本?
【发布时间】:2011-06-09 10:05:58
【问题描述】:

我正在使用带有 aspx View 而不是 Razor View 的 ASP.NET MVC 2 & 3,我的问题是:

如何在 Site.Master 页面中设置标题?我希望每个使用 Site.Master 页面的页面都可以在页面标题之后添加一个主标题,如:“Index -MasterTitle”; “关于-MasterTitle”。

我在 Site.Master 页面中尝试过,但它不起作用:

<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" />
    -MasterTitle
</title>

所以我尝试使用 asp:Literal server control:

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

后来我在这里找到了解决这个问题的方法:CodeExpressionBuilder

但我认为这不是一个合适的解决方案,因为我应该设置太多与 ASP MVC 无关的东西。有没有更好的方案可以解决这个问题?

注意:

  1. 我不想在每个页面而不是 Site.Master 页面中设置 MasterTitle 的值,这是一种愚蠢的方式。
  2. 我不想在 Controller 或 Action 或 Model 中设置 MasterTitle 的值,这是不对的。
  3. 我不想通过 ViewData 设置 MasterTitle 的值。
  4. 我不想使用CodeExpressionBuilder
  5. 我没有使用 Razor View。

感谢您的帮助。

编辑:实际上我想要类似 web.config 的东西,这样我就可以在服务器运行时更​​改 MasterTitle 的值。 :)

【问题讨论】:

  • 您能否详细说明您提出的第一种方法有什么问题?在我看来,它是最好的,并且最容易根据您的需求量身定制
  • @Zruty:是的,我同意你的观点,我坚持在“答案”和“正确答案”之间做一些事情。 :)

标签: asp.net-mvc asp.net-mvc-3 master-pages title


【解决方案1】:

我有类似的问题,这是我必须使用的:

<title>
    <asp:ContentPlaceHolder ID="TitleContent" runat="server" /><%= "-MasterTitle" %>
</title>

【讨论】:

  • 谢谢哥们~这正是我想要的:),谢谢你的帮助。这个问题让我整个月都死了
【解决方案2】:

您应该将资源文件用于此类文本...

http://msdn.microsoft.com/en-us/library/ms227427.aspx

它不仅可以让您将文本设置在一个不错的中心位置,而且专为此目的而设计 - 它还可以让您以后更轻松地创建网站的区域语言版本!

【讨论】:

  • 谢谢Sohnee,是否可以在服务器运行时更​​改资源文件的值?因为 web.config 可以做到这一点。 :)
  • 这在技术上是可行的,尽管方式不尽相同。如果您更新资源,它们会被编译到 DLL 中(您可能拥有 100 种不同语言的资源)。因此,您可以将新的 DLL 拖放到 bin 文件夹中,IIS 将自动回收应用程序池并获取更改。
  • 哇!谢谢,我学到了很多关于资源的知识,希望我能给你另外的10分:),再次感谢
  • 没问题 - 很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
相关资源
最近更新 更多