ASP.NET – Page. Header
 

Podemos transformar qualquer elemento HTML em um Server control utilizando o atributo runat=”server” ,  uma página pode conter ilimitados controles, porém ela só pode ter um HtmlHead, onde temos acesso  Server-side.

<head runat="server">

    <title>Untitled Page</title>

</head>

Como nos Server controls, você pode programaticamente alterar o conteúdo que é renderizado na tag <head>,   útil porque podemos mudar alguns detalhes via código quando precisarmos, como o title, metadata tags (útil para fornecer palavras chaves) e referencias a stylesheet. Para fazer estas modificações utilizamos os membros da classe HtmlHead, que são os seguintes.

Title:  É o título de uma Page HTML que será exibido no barra de títulos do browser. Você pode mudar em tempo de execução.

StyleSheet:  Provê um IStyleSheet  objeto, que representa um estilo inline no cabeçalho.  Você pode utilizar o objeto IStyleSheet  para criar um novo estilo dinamicamente, utilizando os métodos CreateStyleRule() e RegisterStyle().

Exemplo: 

protected void Page_Load(object sender, EventArgs e)

{

        // Cria uma Style object

        Style bodyStyle = new Style();

 

        bodyStyle.ForeColor = System.Drawing.Color.Blue;

        bodyStyle.BackColor = System.Drawing.Color.LightGray;

 

   // Adiciona o style no header

Page.Header.StyleSheet.CreateStyleRule(bodyStyle, null, "body");

 

}

<title>Untitled Page</title>
<style type="text/css">
     body { color:Blue;background-color:LightGrey; }
</style>
</head>

Controls:  Você pode adicionar ou remover tags metadata via código utilizando as classes HtmlMeta. Abaixo um exemplo de como alterar o título e as tags metadata dinamicamente.

 

protected void Page_Load(object sender, EventArgs e)

    {

 

        Page.Header.Title = "Título dinâmico";

 

        //Define uma tag metadata

        HtmlMeta metaDescription = new HtmlMeta();

        metaDescription.Name = "description";

        metaDescription.Content = "ASPNETi, tudo sobre .NET";

 

        //Adicionando

        Page.Header.Controls.Add(metaDescription);

 

        //Segundo tag metadata

 

        HtmlMeta metaKeywords = new HtmlMeta();

        metaKeywords.Name = "keywordS";

        metaKeywords.Content = ".NET, C#, ASP.NET";

        Page.Header.Controls.Add(metaKeywords);

 

    }

RENDERIZADO

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>

                Título dinâmico

</title>

<meta name="description" content="ASPNETi, tudo sobre .NET" />
<meta name="keywordS" content=".NET, C#, ASP.NET" /></head>

<body>

    <form name="form1" method="post" action="Default.aspx" id="form1">

<div>

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGQQe26Fc2jEoK6Akrn/SO4FZNd7jg==" />

</div>    <div>  

    </div>

    </form>

</body>

</html>

 

Um item interessante que vejo em alguns sites é mudar o Title com dados que vem do banco, ou seja com os exemplos acima, o título das suas páginas podem ficar de forma dinâmica dependendo da sua necessidade.

Fabio Galante Mans
fabio.galante@mans.com.br
www.aspneti.com