none
Problemas con una variable por url RRS feed

  • Pregunta

  • TEngo la siguiente pagina

    La llamo pagina 1

    string val1 =""

    if (!Page.IsPostBack) { val1 = Request.QueryString["a"].ToString(); }


    le puse una variable val 1 que lee el dato que trae el url

    le puse despues que trabajo con esa pagina y esa variable un boton para redirigir mi web a 

    protected void Button3_Click(object sender, EventArgs e)
            {
                Response.Redirect("dos.aspx");
            }

    O sea para mi tendria que funcionar pero me marca este error  la pagina uno que recibe el url cuando presiono el boton

    Error de servidor en la aplicación '/'.

    Referencia a objeto no establecida como instancia de un objeto.

    Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

    Detalles de la excepción: System.NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.

    Error de código fuente:
    Línea 22:             if (!Page.IsPostBack)
    Línea 23:             {
    Línea 24:                 val1 = Request.QueryString["a"].ToString();
    Línea 25:             }
    Línea 26:             

    Archivo de origen: C:\Users\Administrador\Desktop\Ultima\MiSitio\MiSitio\uno.aspx.cs    Línea: 24

    Seguimiento de la pila:
    [NullReferenceException: Referencia a objeto no establecida como instancia de un objeto.]
       MiSitio.uno.Page_Load(Object sender, EventArgs e) in C:\Users\Administrador\Desktop\Ultima\MiSitio\MiSitio\uno.aspx.cs:24
       System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
       System.Web.UI.Control.OnLoad(EventArgs e) +95
       System.Web.UI.Control.LoadRecursive() +59
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678
    


    Información de versión: Versión de Microsoft .NET Framework:4.0.30319; Versión ASP.NET:4.7.3429.0

    domingo, 29 de diciembre de 2019 12:49

Todas las respuestas

  • Hola, en el código que muestras no se ve que valor quieres pasar x la URL

    protected void Button3_Click(object sender, EventArgs e)
            {
                string valorAPasarxURL="Valor";
                Response.Redirect("dos.aspx?a"+valorAPasarxURL);
            }


    Votar y marcar respuestas es agradecer.
    Saludos.
    Lima-Perú

    domingo, 29 de diciembre de 2019 14:31
  • val1 = Request.QueryString["a"].ToString();

    Referencia a objeto no establecida como instancia de un objeto.

    Bien, el error aquí está claro: Has llamado a la página 1 sin pasar en la url una variable que se llame "a". Entonces Request.QueryString["a"] devuelve null. Y, claro, al llamar a .ToString() sobre null se produce el error de "referencia no establecida".

    Lo primero es asegurarte de que llamas bien a la página: .../pagina1.aspx?a=algo

    Lo segundo es que si a veces la vas a llamar sin pasarle el parámetro "a", entonces cambies el código para que procese correctamente este caso. La forma más sencilla es quitar el .ToString, que es superfluo porque el Request.QuesryString siempre devuelve un String, y en consecuencia no sirve para nada convertirlo en String. Entonces val1 valdrá null cuando no pases "a" en la Url.

    domingo, 29 de diciembre de 2019 16:34
    Moderador
  • hola

    >>O sea para mi tendria que funcionar pero me marca este error  la pagina uno que recibe el url cuando presiono el boton

    si esto sucede cuando vuelves desde dos.aspx a pagina1.aspx debes asegurarte que la url cuando vuelves que tenga el "a"

    valida cuando falla que la url en el browser sea

    http://sitio/pagina1.aspx?a=valor

    sino tienes ese "a" va a fallar sino lo validas

    if (!Page.IsPostBack) {

    if(Request.QueryString["a"] != null) val1 = Request.QueryString["a"].ToString(); }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 30 de diciembre de 2019 15:16