Los controles ordinarios no se pueden usar en el área principal de una página web, pero a veces son muy importantes, como el título, las palabras clave y la descripción, que pueden ser diferentes en cada página. Entonces, ¿cómo podemos configurarlos dinámicamente según el? ¿contenido?
Método 1: Lo que asp puede hacer, por supuesto que asp.net puede hacerlo. Siempre que escriba la página completa usando Response.Write (), no hay nada que no se pueda personalizar. Por supuesto, también puede "<%=a. cierto miembro%" >". Pero, obviamente, esto no puede aprovechar las características de .net.
Método 2: use el atributo único de asp.net: runat="server", establezca una identificación para el título y luego conviértalo en una variable de servidor, luego podrá configurar su texto. Pero el html que aparece así también tendrá una identificación, lo cual es realmente desagradable de ver.
Método 3: utilizar control literal, recepción: <HEAD>
<asp:Literal ID="lt_title" Runat="servidor" />
<asp:Literal ID="lt_keywords" Runat="servidor" />
<asp:Literal ID="lt_descri" Runat="servidor" />
</HEAD>Backend: Page_Load privado vacío (remitente del objeto, System.EventArgs e)
{
lt_title.Text = "<título>Título</título>";
lt_keywords.Text = "<meta nombre="palabras clave" contenido="palabras clave">";
lt_descri.Text = "<meta nombre="descripción" contenido="descripción">";
}
Esto es básicamente perfecto.
Además, mi página utiliza muchos controles de usuario, y estos controles de usuario tienen niveles. El título de la página puede estar determinado por un control de subusuario en un control de usuario, y el nivel de anidamiento de los controles de usuario no es fijo. Entonces, ¿cómo configurarlo dinámicamente?
En la página de inicio, cree una clase base de control de usuario y agréguele un método público:
public void SetTitle(string title)
{
SetLiteralText("lt_title", string.Format("<title>{0}</title>", título));
}Agregar otro método privado:
SetLiteralText vacío privado (ID de cadena, texto de cadena)
{
Literal lt = nulo;
Ctrl de control = esto;
hacer
{
ctrl = ctrl.Padre;
ctrl
!= null && ctrl.GetType().FullName != "System.Web.UI.HtmlControls.HtmlForm" );
{
lt = ctrl.FindControl(id) como Literal;
si(lt != nulo)
lt.Texto = texto;
}
}
De esta manera, su control de usuario solo necesita heredar de esta clase base y luego llamar a base.SetTitle ("título") cuando desee establecer el título de la página, y la tarea simplemente se completa. Para otras etiquetas en el área del encabezado, el principio es el mismo que para configurar el título.