C sharp - ¿Como llamar a la MasterPage desde una clase que he creado?

 
Vista:
sin imagen de perfil
Val: 6
Ha aumentado su posición en 8 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

¿Como llamar a la MasterPage desde una clase que he creado?

Publicado por Manuel Alejandro (3 intervenciones) el 01/01/2020 00:38:18
Primero para ponerlos en contexto. Tengo:
- Recursos.cs (Clase que he creado)
- Productos.aspx.cs (backcode de una página de mi proyecto)
- ProductosMain.aspx (Dentro de esta página hay un iframe que muestra Productos.aspx)
- MasterPage(La masterpage muestra ProductosMain)

El problema es que dentro de Recursos quiero crear un método para desplegar mensajes de error (El mensaje se despliega mediante un modal que está en MasterPage. El problema esque para ejecutar el script desde back necesito crear un objeto Page para almacenar la MasterPage y con eso poder ejecutar el script con el método
1
ScriptManager.RegisterStartupScript();
pero no se como hacer esto último. ¿Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Roy
Val: 44
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

¿Como llamar a la MasterPage desde una clase que he creado?

Publicado por Roy (23 intervenciones) el 01/01/2020 19:15:52
Puedes llamar RegisterStartupScript() desde una instancia de MasterPage. Pasas el MasterPage como argumento a tu metodo en Recursos.cs, y utilizas ClientScript en lugar de ScriptManager (ScriptManager solamente puede tener una instancia):
1
2
3
4
5
6
7
//en Recursos.cs (code-behind)
public static void ShowMessage(Form mainPage)
{
     //en mainPage existe una func js llamada MostrarMensaje
     string functionToCall = "<script language='javascript'>MostrarMensaje();</script>";
     mainPage.ClientScript.RegisterStartupScript(this.GetType(), "JSScript", functionToCall);
}
En el form MasterPage, la funcion js debe estar antes de cerrar el tag </form>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 8 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

¿Como llamar a la MasterPage desde una clase que he creado?

Publicado por Manuel Alejandro (3 intervenciones) el 02/01/2020 17:17:11
Al final lo resolví de otra manera. Creando de forma dinámica el modal que necesitaba (El script que quería ejecutar era para mostrar un modal de MasterPage). Pero de igual manera me interesa tu respuesta y quisiera saber como creo la instancia de MasterPage en Productos.aspx (Te recuerdo que Productos.aspx no tiene MasterPage. ProductosMain es la que tiene la MasterPage)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Roy
Val: 44
Ha aumentado 1 puesto en C sharp (en relación al último mes)
Gráfica de C sharp

¿Como llamar a la MasterPage desde una clase que he creado?

Publicado por Roy (23 intervenciones) el 02/01/2020 19:21:10
Para poder instanciar tu MasterPage debes agregar esta linea de codigo al principio del html en cada aspx en donde quieras utilizar objetos pertenecientes a MasterPage (agregarlo en la segunda linea de codigo):
1
<%@ MasterType VirtualPath="~/MasterPage.master" %>
Los objetos que pertenecen a MasterPage y que van a ser utilizados externamente, debes declararlos como public static.
Acostumbro agregar un using apuntando a MasterPage para hacer referencia:
1
using paginaMaestra = MiProyecto.MasterPage;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha aumentado su posición en 8 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

¿Como llamar a la MasterPage desde una clase que he creado?

Publicado por Manuel Alejandro (3 intervenciones) el 02/01/2020 19:42:17
¡Muchas gracias! Me servirá mucho en el futuro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar