如果我有一个具有以下视图的 ASP.NET MVC 2 Web 应用程序:
- 主.aspx
- 第1页.aspx
- Page2.aspx
并且所有视图都继承自一个名为Site.master的 MasterView ,
我希望能够为页面设置一个默认的Title/H1,它可以在派生视图中被覆盖。
例如 Main.aspx 将具有“MySite - xxx”,Page1.aspx 将具有“MySite - Page 1”,Page2.aspx 将具有“MySite - Page2”。
如果我选择不在新的派生视图中设置 Title/H1,则会显示主 Title/H1。
使用 WebForms,我将通过以下方式完成此操作:
- 在 master runat="server"上制作 Title/H1 标签
- 在主代码隐藏上公开受保护的属性
- 在派生页面代码隐藏的Page_Load上,设置属性( Master.Title = "Page 1")。
- 在主代码隐藏的Page_PreRender上,将Title/H1标签设置为“我的网站-”+标题;
我们如何使用 ASP.NET MVC 实现这一点?
我可以在主人身上做到这一点:
<title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>
然后在视图中设置:
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
MySite - Page 1
</asp:Content>
但我希望能够在视图中仅指定“第 1 页”,并且标题神奇地更改为“MySite - 第 1 页”。明白我的意思了吗?标题的“MySite -”部分需要是标题的模板。
我可能在这里遗漏了一些明显的东西。:)