代码之家  ›  专栏  ›  技术社区  ›  RPM1984

ASP.NET MVC-如何设计动态h1/标题方案?

  •  2
  • RPM1984  · 技术社区  · 14 年前

    如果我有一个具有以下视图的ASP.NET MVC 2 Web应用程序:

    1. MIN
    2. pAG1.ASPX
    3. pAGE2.ASPX

    所有视图都继承自一个名为 主站 ,

    我想有一个 违约 页面的标题/h1,可在派生视图中重写。

    例如,main.aspx将有“mysite-xxx”,page1.aspx将有“mysite-page1”,page2.aspx将有“mysite-page2”。

    如果我选择 不设置 标题/h1在新的派生视图中,将显示主标题/h1。

    通过WebForms,我可以通过以下方式完成这一点:

    1. 在主控形状上制作标题/h1标记 RunAT=服务器
    2. 公开受保护的属性 在主代码后面
    3. 页负荷 在派生页代码的后面,设置属性( master.title=“第1页” )
    4. 页预处理机 在主代码后面,将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>
    

    但是我想在视图中只指定“page 1”,标题神奇地变为“mysite-page1”。知道我的意思吗?标题的“mysite-”部分需要是标题的模板。

    我可能遗漏了一些明显的东西。:)

    3 回复  |  直到 13 年前
        1
  •  2
  •   Diego theGame    14 年前
        2
  •  1
  •   Community pid    7 年前

    我通常是这样做的:

    <title>MySite - <%: Page.Title ?? "Default title" %></title>
    

    在你的主页上。

    然后,您可以定义 Title 像这样的内容页上的属性:

    <%@ Page Language="C#"
             MasterPageFile="~/Views/Shared/Site.Master"
             Inherits="System.Web.Mvc.ViewPage"
             Title="Page 1"
    %>
    

    编辑:

    好吧,你可能想看看这个问题: ASP.NET MVC - View with master page, how to set title? .

        3
  •  0
  •   Lorenzo OnoSendai    14 年前

    比你描述的容易多了。

    只需将内容占位符添加到母版页

    <title>
        My Site - <asp:ContentPlaceHolder ID="PageTitle" runat="server" />
    </title>
    

    然后在您的内容页中使用它作为

    <asp:Content ID="Content3" ContentPlaceHolderID="PageTitle" runat="server">
        My Page
    </asp:Content>
    

    这种方法是可行的,但您必须使用HTML头标记,而不是服务器控件。所以只需移除 runat="server" 从你的头上。