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

在整个网站上保持不变的标题

  •  4
  • JasCav  · 技术社区  · 14 年前

    如果我在ASP.NET中创建一个网站,是否可以通过编程将页面的标题设置为一些附加了一些额外信息的预定义值?例如:

     Home Page   Title = Site Name
     Links       Title = Site Name: Links
     Stuff       Title = Site Name: Stuff
    

    基本上,无论我在当前页面上定义什么是主标题,我都希望在标题的末尾加上“:name”,这样它在整个网站上保持一致。我想把它定义为一个ContentPlaceholder,并围绕它包装一些逻辑,但是它似乎没有像我想象的那样工作(aka,一点也没有)。

    5 回复  |  直到 14 年前
        1
  •  0
  •   Thyamine    14 年前

    这可以回答您的问题: 4guysfromrolla link

        2
  •  0
  •   Greg Olmstead    14 年前

    在母版页中尝试此操作

    protected void Page_Load(object sender, EventArgs e)
    {
    PreRender += new EventHandler(MasterPage_PreRender);
    }
    
    void MasterPage_PreRender(object sender, EventArgs e)
    {
    Page.Title = "Site Name - " + Page.Title;
    }
    

    并将页面标题放在内容页的@page指令中(title=“blah”使其成为“site name-blah”)。

        3
  •  0
  •   ubiquibacon    14 年前

    Expression Web既有动态Web模板(当前我最喜爱的模板)也有母版页。DWT非常容易使用,并且完全符合您的要求,是一个真正的节省时间的工具。为整个网站创建一个DWT(模板页面),然后在该页面中是可编辑区域,可以对其进行编辑,使其他所有页面都具有唯一性。此外,ExpressionWeb与其他MS产品和功能(如Visual Studio和ASP.NET)配合使用非常好。

        4
  •  0
  •   alejandrobog    14 年前

    如果您使用的是母版页,那么Lerxst答案应该这样做,否则您可以使用一个基本页来完成您想要的内容。像这样:

    public abstract class BasePage : Page
    {
      protected abstract string Subtitle { get; }
      protected BasePage()
      {
        Page.Load += (s, e) => { Title = "Site Name: " + Subtitle; };
      }}
    
        5
  •  0
  •   JasCav    14 年前

    虽然Lerkst的答案适用于ASP.NET WebForms,但我正试图通过ASP.NET MVC来实现这一点。因此,网站.master没有代码隐藏页(因为不应该有代码隐藏页)。所以,在做了一点研究之后,我遇到了 his post by Guillaume Roy 其中讨论了如何使用actionfilterattribute在该数据的设置中使用控制器(视图是“哑的”,并且只呈现它)。这允许我向视图中插入数据,从而完成我想要做的事情。

    希望这能帮助其他人!