Em programas ASP anteriores, frequentemente usávamos Response.Write para gerar dinamicamente informações de cabeçalho de páginas da Web, mas em ASP.NET, o chamado princípio orientador de separação de código e UI não quer mais que façamos isso (é claro, se você estiver disposto, você pode, afinal, é apenas uma sugestão). Já vi outras pessoas usarem <title ranut="server" id="titleControl">Default Title</title> para definir o título, mas eu não. Não acho que seja muito bom porque gerará id="titleControl" redundante. Pessoalmente, acho melhor usar o controle Literal, porque ele não produz um caractere redundante :). Algumas pessoas também usam js para definir o título dinamicamente. , mas o que você pede ao mecanismo de pesquisa para fazer?
Na verdade, é muito fácil controlar dinamicamente as informações principais da página. Basta assistir à demonstração primeiro: http://www.lvjiyong.com/demo/aspnet/setheader/.
A demonstração é muito simples. Você pode baixar o código-fonte e dar uma olhada mais de perto. As anotações estão todas lá
.
O método é colocado em BasePage. Na próxima vez que você permitir que o WebForm herde a classe BasePage, você poderá chamá-lo de Use Literal para definir as informações do título.
Literal nos permite definir informações de texto diretamente. Ao usá-lo, primeiro deixamos o programa descobrir se existe um controle Literal especificado e, em caso afirmativo, definir o Texto.
/**//// <resumo>
/// Definir informações do cabeçalho
/// </sumário>
/// <param name="_name">Controle</param>
/// <param name="_control">Texto</param>
setHeader vazio privado (string _control, string _texto)
{
Literal obj = this.FindControl(_control) as Literal;
if (obj! = nulo)
{
obj.Text = _texto;
}
}
Por exemplo, se definirmos <asp:Literal id="PageTitle" runat="server" /> na área Head, podemos definir o título assim. Aqui primeiro preparamos um método.
/**//// <resumo>
///Definir o título da página web
/// </sumário>
/// <param name="_title">Título da página</param>
setTitle nulo protegido (string _title)
{
setHeader("PageTitle","<title>" + _title + "</title>");
No WebFrom podemos definir o título assim
this.SetTitle("Blog da Lu");
Os métodos para descrição, palavras-chave, etc. são os mesmos, mas você precisa definir o Meta. Não vou entrar nisso.
Agora vou falar sobre o carregamento de js e css. usamos o controle PlaceHolder Por que usar isso em vez de Literal?
PlaceHolder geralmente ocupa apenas uma posição, o que nos facilita carregar controles dinamicamente. Isso torna o carregamento de js e css muito mais conveniente. Primeiro, também encontramos o controle PlaceHolder especificado.
/**//// <resumo>
/// Encontre o contêiner PlaceHolder do LoadHeader
/// </sumário>
/// <retorna></retorna>
Controle privado findHeader()
{
retorne this.FindControl("LoadHeader");
}Em seguida, adicione o controle dinamicamente
/**//// <resumo>
/// Carrega o controle no controle PlaceHolder
/// </sumário>
/// <param name="_obj"></param>
vazio protegido LoadPlaceHolder (HtmlGenericControl _obj)
{
objHeader = findHeader() as Control;
//Carrega arquivo de script
if (objHeader! = nulo)
{
objHeader.Controls.Add(_obj)
;
}Para carregar CSS ou JS, primeiro usamos HtmlGenericControl para criar um controle filho e depois o adicionamos ao controle PlaceHolder
/**//// <resumo>
/// Carrega o arquivo de folha de estilo especificado
/// </sumário>
/// <param name="_cssPath">Endereço do arquivo da folha de estilo</param>
vazio protegido LoadCss(string _cssPath)
{
HtmlGenericControl objCss = new HtmlGenericControl("link");
objCss.Attributes["rel"] = "folha de estilo";
objCss.Attributes["type"] = "texto/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["media"] = "tela";
this.LoadPlaceHolder(objCss);
}
Então, quando quisermos carregar a folha de estilos no WebForm, só precisamos usar
this.LoadCss("Style Sheet Address"); É o mesmo que carregar js, não vou mencionar isso.
A função que escrevi no código fonte é um pouco melhor do que a mencionada aqui. você mesmo.