2011-10-04 7 views
5

Tengo una página que no tiene runat = "server" establecida en la sección <head/>. No tengo acceso para modificar ninguno de los códigos en la página.¿Puedo modificar la sección <head/> de una Página en .NET desde un Control de usuario sin runat = "server"?

Esta página contiene un control de usuario al que tengo acceso. ¿Puedo agregar una etiqueta <meta/> a la sección principal de la página desde el control del usuario? Debe estar en el lado del servidor, por lo que una solución de JavaScript no funcionará.

+2

Si no está marcado como 'runat = "server"' probablemente no es fácil. ASP.NET considera que toda la sección antes del primer control es una única cadena que debe concatenarse para generar el resultado final. – R0MANARMY

+1

Siempre puede usar javascript – Dani

+0

Pasar datos en un campo oculto y usar javascript en la página cargada para actualizar los metadatos –

Respuesta

2

Una opción es crear un filtro de respuesta y luego modificar la salida antes de que se envíe al usuario.

http://www.4guysfromrolla.com/articles/120308-1.aspx

+0

Este es un enfoque mucho mejor que el mío. Sin embargo, agregar filtros de respuesta desde dentro de un control puede conducir rápidamente a un código difícil de mantener. – R0MANARMY

+0

Esto funcionó muy bien. Gracias a los dos. – fehays

2

puede analizar el texto en

(this.Page.Controls[0] as LiteralControl).Text 

para ver donde la cuerda <head> aperturas, e insertar el texto que necesita allí inyectando de este modo su propio código en el encabezado de la página sin que se marcó con runat="server".

Por favor, tenga en cuenta sin embargo, esto es bastante hacky manera de obtener su código donde es muy probable que no debería ser (de lo contrario el elemento <head> habría sido marcado como runat="server" para que pueda acceder a él normalmente). Esto también se romperá si en una fecha posterior el elemento principal se cambia para ser un control ASP.NET. Puede que no funcione con las páginas maestras, deberá subir el árbol de control buscando el elemento literal superior.

Cuestiones relacionadas