Foros del Web » Programando para Internet » ASPX (.net) »

¡¡SOCORRO!! Cargar un control de usuario

Estas en el tema de ¡¡SOCORRO!! Cargar un control de usuario en el foro de ASPX (.net) en Foros del Web. Hola a todos. No consigo cargar un control de usuario ASCX. El código es muy sencillo: Código: Try ' Se carga la cabecera Dim cCabecera ...
  #1 (permalink)  
Antiguo 27/09/2005, 07:45
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
¡¡SOCORRO!! Cargar un control de usuario

Hola a todos. No consigo cargar un control de usuario ASCX.

El código es muy sencillo:

Código:
        Try
            ' Se carga la cabecera
            Dim cCabecera As Control = Page.LoadControl("controles/Cabecera.ascx")
            Me.phCabecera.Controls.Add(cCabecera)
        Catch ex As Exception
            Response.Write("Error en cabecera: " & ex.Message & "<br>")
        End Try
El problema es que ni siquiera controla el error, sino que en el navegador sale el siguiente error:

Detalles de la excepción: System.UriFormatException: URI no válido: no se puede analizar el nombre de host.

Sin embargo en otra sección de la página me los carga sin problemas. Eso sí, el control está en el mismo directorio que la página que lo intenta cargar.

¿Qué puedo hacer? Se me ha colgado toda la página entera.

Gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 27/09/2005, 08:09
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Cita:
Iniciado por Bravenap
Eso sí, el control está en el mismo directorio que la página que lo intenta cargar.
Sin embargo en tu code... estas diciendo que el control esta en el directorio controles... (un nivel mas abajo que la pagina que lo intenta cargar)...
  #3 (permalink)  
Antiguo 27/09/2005, 08:29
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ya está solucionado, aunque de mala manera. He puesto todos los controles en el mismo directorio y ya no me da error. Claro, también he cambiado el código:

Dim cCabecera As Control = Page.LoadControl("Cabecera.ascx")
Me.phCabecera.Controls.Add(cCabecera)

Andres95, no entiendo muy bien qué es lo que dices. Supongamos que tengo la página index.aspx en el directorio raiz. Y la carpeta controles en el directorio raiz. Dentro de esa carpeta están los controles que intenta cargar index.aspx. Entiendo entonces que el código debería ser:

Dim cCabecera As Control = Page.LoadControl("controles/Cabecera.ascx")

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 28/09/2005, 05:33
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bueno, esto ya si que no lo entiendo. Explico: he puesto los controles en una carpeta llamada "includes", hasta ahí todo bien. Sin embargo, con el mismo código que tenía en un principio, ahora me carga unos controles sí y otros no. Lo más gracioso de todo es que un mismo control a veces falla y a veces no. En concreto, le paso dos parámetros por QueryString. Uno es siempre igual y el otro no se pasa siempre. Cuando le paso este último no da error, pero si no se lo paso, el dichoso UriFormatException sale a saludarme.

Este es el código del control:

Código:
        Dim num As String = Request.QueryString("num")
        Dim strSel As String

        If num = "" Then
            Try
                Me.pnlIndice.Visible = True
                Me.pnlNum.Visible = False
                strSel = "SELECT * FROM indNumeros WHERE activada = 1 ORDER BY numero DESC"
                Dim dt As DataTable = DevuelveDT(strSel)
                If dt.Rows.Count > 0 Then
                    Me.hlUltimo.Text = "Nº " & dt.Rows(0)("numero") & " (" & dt.Rows(0)("mes") & " " & dt.Rows(0)("año") & ")"
                    Me.hlUltimo.NavigateUrl = "..?ver=indice&num=" & dt.Rows(0)("numero")
                    Me.imgUltimo.ImageUrl = "../imagen/portadas/revista" & dt.Rows(0)("numero") & ".jpg"
                    Me.imgUltimo.Attributes.Add("onClick", "javascript:location.href='" & "?ver=indice&num=" & dt.Rows(0)("numero") & "'")
                    Me.imgUltimo.Style.Item("cursor") = "hand"
                    If dt.Rows.Count > 1 Then
                        dt.Rows(0).Delete()
                        Me.dlNumeros.DataSource = dt
                        Me.dlNumeros.DataBind()
                    End If
                Else
                    Response.Redirect(".?ver=NoEncontrado", False)
                End If
            Catch ex As Exception
                Response.Write(ex.Message)
            End Try
        Else
            Me.pnlIndice.Visible = False
            Me.pnlNum.Visible = True
            strSel = "SELECT * FROM indNumeros WHERE activada = 1 AND numero = " & num
            Try
                Dim dr As DataRow = DevuelveFila(strSel)
                Me.imgPortada.ImageUrl = "../imagen/portadas/revista" & num & ".jpg"
                Me.imgPortada.ToolTip = "Revista nº " & num
                Me.imgPortada.AlternateText = "Revista nº " & num
                Me.lblNum.Text = "Nº " & num
                Me.lblTrim.Text = dr("trimestre") & " trimestre de " & dr("año")
                Me.lblIndice.Text = BDaHTML(dr("indice"))
            Catch ex As Exception
                Response.Redirect(".?ver=NoEncontrado", False)
            End Try
        End If
Si paso por ejemplo, "?ver=indice&num=80" todo sin problemas pero si es símplemente "?ver=indice"....

¿Alguna idea?

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 28/09/2005, 05:52
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Dichosas barritas Sí, sí, unos malditas barritas. He cambiado una línea y ya está:

Me.hlUltimo.NavigateUrl = "..?ver=indice&num=" & dt.Rows(0)("numero")

por

Me.hlUltimo.NavigateUrl = "../?ver=indice&num=" & dt.Rows(0)("numero")

Pues nada, muchas gracias igualmente.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #6 (permalink)  
Antiguo 28/09/2005, 14:20
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Cita:
Dichosas barritas Sí, sí, unos malditas barritas. He cambiado una línea y ya está:
Para evitarte esos problema es mejor que obtengas la ruta exacta del site y vas navegando por los directorios que necesitas...

Podría quedar algo así:

Cita:
Me.hlUltimo.NavigateUrl = Request.ApplicationPath + "subFolder/otrsubfolder?ver=indice&num=" & dt.Rows(0)("numero")
Con ello te aseguras de siempre traerte la ruta raíz..

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #7 (permalink)  
Antiguo 29/09/2005, 07:33
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
ok, gracias. Sí va a ser lo mejor.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.