Pregunta

Tengo un sitio web en asp.net que utiliza una página maestra.En esta página maestra tengo un control de vista múltiple con una vista que tiene todo el contenido de las páginas de contenido y una vista que tiene contenido local para la página maestra donde muestro mensajes de error de todas las páginas de contenido.

En esta vista de error tengo un control de etiqueta asp.net que muestra los mensajes de error.Por lo general, la etiqueta funciona bien, pero en algunos casos la etiqueta es nula, lo que genera una excepción NullReferenceException.Ahora he manejado este caso verificando si la etiqueta es nula antes de usarla, pero aún así mi pregunta es:

¿Por qué esta etiqueta es nula?¿Cuáles son las circunstancias que pueden generar esto?

EDITAR: En la página maestra tengo un método llamado SetErrorText que toma una cadena y establece la etiqueta.Llamo a este método desde el método Page_Load de las páginas de contenido y, en general, funciona bien.En todos los casos excepto dos (que he descubierto hasta ahora), la etiqueta se inicializa y nada separa estos dos casos de todos los que funcionan.

Además, se inicializan todos los demás controles de la página maestra, como el control Vista que alberga la etiqueta.

Cuando aparece el Page_Load de una página de contenido, la página maestra debe completarse.

¿Fue útil?

Solución

Parece que el problema fue de descuido.Alguien se había olvidado de eliminar los controles de contenido generados automáticamente que Visual Studio incluye en todas las páginas de contenido donde la página maestra tiene un control ContentPlaceHolder.

Si una página de contenido tiene un control de contenido, parece que todos los controles que se colocan en el control ContentPlaceHolder en la página maestra serán nulos.

Otros consejos

¿Desde qué método en la página maestra accede a la etiqueta?Dependiendo de la etapa del ciclo de vida de la página, es posible que el control de etiqueta aún no se haya cargado

¿Podría acceder a él antes de que se cree?Verifique el ciclo de vida de la página: http://msdn.microsoft.com/en-us/library/ms178472.aspx

Tuve un error muy similar.En mi caso, fue causado por una rareza del compilador .NET relacionada con el archivo del diseñador de controles.Incluso si el archivo del diseñador tiene los controles definidos correctamente, elimínelo, vuelva a generarlo y reconstrúyalo (asegúrese de reconstruir, no simplemente "compilar").Vea la respuesta principal aquí sobre cómo regenerar el archivo del diseñador:

¿Cómo se fuerza a Visual Studio a regenerar los archivos .designer para archivos aspx/ascx?

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