Pregunta

¿Alguien tiene consejos para mover una página maestra de una solución / aplicación a otra?

Copié una página maestra de una solución existente a una nueva.

La solución original se construye y funciona bien.

En la nueva solución, la página causa errores de compilación

Estas son principalmente 'variables' no declaradas.

He comentado todo el código del servidor para la página, a excepción de 2 declaraciones muy simples.

la declaración 1 hace referencia a un control que está en el marcado original de la página

pgLoginView.EnableViewState = True

La declaración 2 hace referencia a un control que se agregó recientemente para fines de prueba

lblFrogs.Text = "sdfgsd"

Es como si el compilador no conociera a los miembros de la clase que deberían generarse a partir del marcado. He comprobado que el atributo 'Heredar' de los archivos de marcado está configurado correctamente. Cuando invoco intellisense en el editor de código, ambos objetos (lblFrogs y pgLoginView) se enumeran y, a su vez, enumeran sus propiedades y métodos correctamente después de presionar '.'

Cualquier ayuda o idea relacionada con este problema será muy apreciada. Estoy al final de mi ingenio: fue un viaje corto.

¿Fue útil?

Solución 4

Finalmente encontré la fuente de mi aflicción con el objeto Perfil.

En primer lugar, la funcionalidad del perfil solo está disponible en el proyecto de tipo de sitio web. Sin embargo, dado que el proyecto ya se había convertido al tipo de sitio web para resolver el primer problema con la referencia de elementos de la página, ¿por qué el objeto de perfil no estaba disponible?

La respuesta es que la conversión no modifica el marcado de la página. La ubicación del código subyacente debe especificarse con " CodeFile " ;, y el atributo Hereda debe tener la información del espacio de nombres principal recortada. Ejemplo:

  

Otros consejos

Debe verificar el código de diseñador generado para su página maestra, aunque la página .aspx / .master se usa en tiempo de ejecución para crear instancias de todos los controles en su página, en tiempo de compilación toda la información sobre qué controles están presentes en el marcado está contenido en la clase parcial en el archivo .designer.master:

public partial class Site1
{
    /// <summary>
    /// ContentPlaceHolder1 control.
    /// </summary>
    /// <remarks> Auto-generated field.</remarks>
    protected global::System.Web.UI.WebControls.ContentPlaceHolder ContentPlaceHolder1;

    // Etc...
}

Si esa página no contiene el código generado correctamente, entonces no estoy realmente seguro de qué sugerir además de jugar con él, o si realmente te quedas atascado, declara los controles tú mismo: he tenido este problema antes pero no sé mucho sobre cómo se genera el código del diseñador.

Si ese no es el problema, ¿estás seguro de que Visual Studio no ha decidido cambiar el nombre de ninguno de los controles?

christian-hayter Parecía estar en el camino correcto. Convertí el proyecto en un proyecto de sitio web y el problema desapareció.

Parece que la causa raíz puede seguir siendo un misterio.

Algo definitivamente se ha vuelto loco con la compilación de esta página.

No puedo hacer referencia a la propiedad Perfil. Este artículo de Dino Esposito Dice que el objeto Perfil se agrega a la página como parte del proceso de compilación de la siguiente manera:

  

Perfil protegido Perfil común {       obtener {           return ((ProfileCommon) (Context.Profile));   }}

Cuando hago una búsqueda en archivos para ProfileCommon en un proyecto de trabajo, obtengo muchos resultados de los archivos temporales asp.net. En el proyecto roto, ProfileCommon no aparece en ninguno de los archivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top