En programas ASP anteriores, a menudo usábamos Response.Write para generar dinámicamente información del encabezado de la página web, pero en ASP.NET, el llamado principio rector de separación de código y UI ya no quiere que hagamos esto (por supuesto, si Si estás dispuesto, tú puedes. Después de todo, es solo una sugerencia). He visto a otros usar <title ranut="server" id="titleControl">Default Title</title> para establecer el título, pero yo no lo hago. No creo que sea muy bueno porque generará id="titleControl" redundante. Personalmente, creo que es mejor usar el control Literal, porque no produce un carácter redundante :). , pero ¿qué le pide al motor de búsqueda que haga?
En realidad, es muy fácil controlar dinámicamente la información del encabezado de la página. Simplemente mire la demostración primero: http://www.lvjiyong.com/demo/aspnet/setheader/.
La demostración es muy simple. Puede descargar el código fuente y verlo más de cerca. Todas las anotaciones se
utilizan principalmente en Literal y PlaceHolder.
El método se coloca en BasePage. La próxima vez que permita que WebForm herede la clase BasePage, puede llamarlo Use Literal para configurar la información del Título. Use PlaceHolder para cargar la hoja de estilo y el script.
Literal nos permite configurar directamente información de texto. Al usarlo, primero dejamos que el programa averigüe si hay un control Literal específico y, de ser así, configura el Texto.
/**//// <resumen>
/// Establecer información del cabezal
/// </summary>
/// <param nombre="_name">Control</param>
/// <param nombre="_control">Texto</param>
setHeader vacío privado (cadena _control, cadena _texto)
{
Obj literal = this.FindControl(_control) como Literal;
si(obj!=nulo)
{
obj.Texto = _texto;
}
}
Por ejemplo, si configuramos <asp:Literal id="PageTitle" runat="server" /> en el área Head, podemos configurar el título de esta manera. Aquí primero preparamos un método.
/**//// <resumen>
///Establecer título de la página web
/// </summary>
/// <param name="_title">Título de la página web</param>
SetTitle vacío protegido (cadena _título)
{
setHeader("Título de página","<título>" + _título + "</título>");
En WebFrom podemos establecer el título así.
this.SetTitle("Blog de Lu");
Los métodos para Descripción, Palabras clave, etc. son los mismos, pero es necesario configurar Meta. No entraré en esto.
Ahora hablaré sobre la carga de js y css. Usamos el control PlaceHolder. ¿Por qué usar esto en lugar de Literal? Piensa por ti mismo.
PlaceHolder generalmente solo ocupa una posición, lo que nos facilita cargar controles dinámicamente. Esto hace que cargar js y css sea mucho más conveniente. Primero, también encontramos el control PlaceHolder especificado.
/**//// <resumen>
/// Encuentra el contenedor PlaceHolder de LoadHeader
/// </summary>
/// <devoluciones></devoluciones>
control privado findHeader()
{
devuelve this.FindControl("LoadHeader");
} Luego agregue el control dinámicamente
/**//// <resumen>
/// Carga el control en el control PlaceHolder
/// </summary>
/// <param nombre="_obj"></param>
vacío protegido LoadPlaceHolder (HtmlGenericControl _obj)
{
objHeader = findHeader() as Control;
//Cargar archivo de script
si (objHeader! = nulo)
{
objHeader.Controls.Add
(_obj);
}Para cargar CSS o JS, primero usamos HtmlGenericControl para crear un control secundario y luego lo agregamos al control PlaceHolder
/**//// <resumen>
/// Carga el archivo de hoja de estilo especificado
/// </summary>
/// <param name="_cssPath">Dirección del archivo de hoja de estilo</param>
LoadCss vacío protegido (cadena _cssPath)
{
HtmlGenericControl objCss = nuevo HtmlGenericControl("enlace");
objCss.Attributes["rel"] = "hoja de estilo";
objCss.Attributes["tipo"] = "texto/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["media"] = "pantalla";
this.LoadPlaceHolder(objCss);
}
Luego, cuando queramos cargar la hoja de estilos en WebForm, solo necesitamos usar
this.LoadCss ("Dirección de la hoja de estilo"); Es lo mismo que cargar js. No lo mencionaré.
La función que escribí en el código fuente es un poco mejor que la que se menciona aquí. tú mismo.