Todo lo que quiero hacer es acceder al elemento <body>
desde el código subyacente de una página de contenido y añadir un nombre de la clase a la misma.Acceso elemento del cuerpo de la página de contenido a través de una página maestra anidada
que tienen una página maestra de nivel superior con el elemento <body>
en ella. Luego tengo una página maestra anidada que es la página maestra de la página de contenido. Desde el código detrás de la página de contenido, quiero agregar un nombre de clase al elemento del cuerpo. Eso es todo.
tengo esto en el maestro de nivel superior:
<body id="bodyNode" runat="server">
he añadido esto al código subyacente de la página de contenido:
Master.bodyNode.Attributes.add("class", "home-page");
Y consigo un mensaje que:
System.Web.UI.MasterPage 'no contiene una definición para' bodyNode
Si agrego esto a la página de contenido aspx:
<% @ MasterType VirtualPath="~/MasterPage.master"%>
El mensaje cambia a:
bodyNode es inaccesible debido a su nivel de protección
favor avise, He perdido 2 horas en lo que parece ser algo que debería ser realmente simple de hacer :(
También puede configurar una propiedad pública para permitirle acceder al cuerpo sin cortar y pegar este código en todas sus páginas de contenido –
Gracias, agregué esto pero ahora la excepción ha cambiado a: 'Referencia a objeto no establecida como instancia de un objeto.' la línea que genera esto es 'body.Attributes.Add (' class ',' home-page ');' aunque no hay ningún subrayado rojo en el archivo real para indicar un problema ...? – danwellman
esto significa que "cuerpo" es nulo. Verifique que la línea de arriba esté correctamente encontrando poniendo un punto de quiebre después. Probablemente encontrarás que no lo es. Intenta ejecutar Master.FindControl ("bodyNode") en el modo inmediato (una vez que llegas al punto de interrupción) y ve lo que devuelve, voy a probar y volver a responder en breve –