elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Como cargar un control a traves de un namespace de forma dinamica?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como cargar un control a traves de un namespace de forma dinamica?  (Leído 2,468 veces)
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Como cargar un control a traves de un namespace de forma dinamica?
« en: 25 Julio 2013, 21:51 pm »

Estoy haciendo un desarrollo en c# para paginas web ASP y actualmente estoy haciendo las inclusiones de los themes y módulos de la siguiente manera:

Código:
Control theme = (Control)LoadControl(config.theme.rutas.DirectorioLocal);

/* Agrega el Theme al control principal */
this.FindControl("bufferTheme").Controls.Add(theme);

No hay ningún problema pero quiero cambiar la manera de cargar dinamicamente un control dentro de otro sin tener que depender de las rutas de archivos. Se me ocurrió intentar llamar al namespace de manera dinámica pero no resulta, al parecer c# no lo soporta:

Código:
(Control)Themes["themeelegido"]

Donde el namespace del archivo Default.Master es "Themes.themeelegido.Default"

Hay algo similar? por ejemplo:
Código:
(Control)LoadControlFromNameSpace("Themes." + theme.nombre + ".Default")


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Como cargar un control a traves de un namespace de forma dinamica?
« Respuesta #1 en: 25 Julio 2013, 22:39 pm »

Código
  1. Type t = Type.GetType("Themes.themeelegido.Default");
  2. Control theme = (Control)LoadControl(t, null);

Con algo como esto debería de funcionar, pero no lo he probado :P

Saludos


En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Como cargar un control a traves de un namespace de forma dinamica?
« Respuesta #2 en: 26 Julio 2013, 15:26 pm »

Por alguna extraña razón me pasa sin errores pero no se escribe el control html en la pagina, queda en blanco.

Al ver los objetos desde visual studio me aparece que el objeto theme si está bien definido y equivale al control del theme, pero al agregarlo sobre el otro control este queda en blanco como si el código html no existiera y lo mas raro es que no me arroja ningún error.

Código
  1. /* Carga el Theme */
  2. Type t = Type.GetType("Themes.simpleLayout.Default");
  3. Control theme = (Control)LoadControl(t, null);
  4. //Control theme = (Control)LoadControl(config.theme.rutas.archivoDefaultVirtual);
  5.  
  6. /* Agrega el Theme al control principal */
  7. this.FindControl("bufferTheme").Controls.Add(theme);

..... ahora que me doy cuenta navegando entre el arbol de subojetos del objeto theme dice que no tiene ningún master asociado y se supone que el control es el master, está definido pero está como vacio :-/ y el nombre del namespace está bien puesto.

Intenté ponerlo sin el .Default pero ahi si me arroja un error.

Por lo menos ya tengo una pequeña luz sobre como hacerlo, ahora es cosa de ver porque devuelve un valor en blanco. Será porque loadcontrol acepta un string de ruta y no de tipo? quien sabe, a lo mejor me hubiera dado un error si fuera asi de estricto.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Como cargar un control a traves de un namespace de forma dinamica?
« Respuesta #3 en: 26 Julio 2013, 15:46 pm »

Hay un problema evidente que no tuve en cuenta, en el ascx está la inicialización de los controles, y cuando cargas el control desde la clase te estas perdiendo esa parte :-\.
http://msdn.microsoft.com/en-us/library/ewtd66a0%28v=VS.90%29.aspx#CommunityContent (último comentario)

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.589


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Como cargar un control a traves de un namespace de forma dinamica?
« Respuesta #4 en: 26 Julio 2013, 16:27 pm »

bueno, mejor lo he dejado como ruta de archivo tal como estaba antes xD igual gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mejor forma de cargar un objeto con datos de bd
.NET (C#, VB.NET, ASP)
Shell Root 0 1,440 Último mensaje 18 Septiembre 2013, 07:21 am
por Shell Root
toman el control del pc a traves de skipe?
Seguridad
duall 7 2,867 Último mensaje 21 Diciembre 2015, 16:23 pm
por duall
Los riesgos de cargar el smartphone a través de un ordenador
Noticias
wolfbcn 0 1,238 Último mensaje 27 Mayo 2016, 21:32 pm
por wolfbcn
Incluir metadatos de forma dinámica
PHP
Marciano_79 5 3,431 Último mensaje 30 Junio 2016, 23:14 pm
por gAb1
Sobre controles creados de forma dinamica
.NET (C#, VB.NET, ASP)
rulovive 5 3,616 Último mensaje 28 Mayo 2018, 19:54 pm
por rulovive
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines