solicitar cadena de consulta en variable

hola, estoy tratando de obtener la identificación de una URL y enviarla al lado de Clint, esto es lo que hice

esta es mi url:

http://localhost:53010/edit.aspx?Id=4

código detrás

    Public Partial Class Edit
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load

End Sub
Private _myId As String = Request.QueryString("id")

Public Property myId() As String
    Get
        Return _myId
    End Get
    Set(ByVal value As String)
        _myId = value
    End Set
End Property

Cliente final de clase

<%= myId%>

error

Request is not available in this context

esto también es lo que obtengo cuando muevo el accesorio privado a page_load() "private" no es válido en la declaración de variable local; alguna idea de lo que está sucediendo

Muchas Gracias


resuelvo este problema aqui esta la respuesta

Public Partial Class Edit
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
    MyIdVal = Request.QueryString("id")


End Sub

Private _myIdVal As String
Public Property MyIdVal() As String
    Get
        Return _myIdVal
    End Get
    Set(ByVal value As String)
        _myIdVal = value
    End Set
End Property

Clase final

preguntado el 22 de mayo de 12 a las 15:05

Debe aprender cómo funcionan las clases y los campos de VB.Net. -

4 Respuestas

Esa es una inicializador de campo.
Los inicializadores de campo se ejecutan antes que el constructor y no pueden acceder a la instancia que están inicializando.
Por lo tanto, no puede utilizar el Request propiedad allí.

Necesitas mover eso al constructor o Page_Load.

contestado el 22 de mayo de 12 a las 15:05

cuando lo muevo a la carga de la página, aparece este error "privado" no es válido en la declaración de variable local - Mina gabriel

Necesitas mover la inicialización. - SLaks

myId = Request.QueryString("id") - SLaks

cuando hago Dim myId As String = Request.QueryString ("id"), funciona bien, pero como sé, necesito una propiedad para enviar myId al lado del cliente, ¿verdad? - Mina gabriel

Debe declarar un campo en la clase y establecer su valor en Page_Load. - SLaks

Estás accediendo al Request demasiado temprano.

Funcionará si configuras myId on Init, Page_Load o cualquier otro evento de página similar.

contestado el 22 de mayo de 12 a las 15:05

Su explicación (primera línea) es incorrecta; esto no tiene nada que ver con el ciclo de vida de la página. - SLaks

cuando lo muevo a la carga de la página, aparece este error "privado" no es válido en la declaración de variable local - - Mina gabriel

Intente configurar _myId en su PageLoad.

contestado el 22 de mayo de 12 a las 15:05

cuando lo muevo a la carga de la página, aparece este error "privado" no es válido en la declaración de variable local - - Mina gabriel

Así que quería una clase con propiedades que se establecieron a partir de cadenas de consulta y encontré este hilo. También quería poder acceder a las propiedades en la página principal e incluso en JavaScript desde una sola ubicación. Esto es lo que se me ocurrió:

// App_Code/QueryStrings.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for QueryStrings
/// </summary>
public class QS
{
    private int id = -1;

    public QS()
    {
        if (HttpContext.Current.Request.QueryString["id"] != null)
            try
            {
                Int32.TryParse(HttpContext.Current.Request.QueryString["id"], out id);
            }
            catch
            {
                id = -2;
            }
        else
            id = -3;
    }

    public int ID
    {
    get
        {
            return id;
        }
    }
}

Luego puede llamarlo desde su página .aspx de la siguiente manera:

<body>
    <form id="form1" runat="server">
    <div>
        <% QS qs = new QS(); %>
        ID = <%= qs.ID %>
    </div>
    </form>
</body>

Por supuesto, puede llamar desde el código subyacente con la misma sintaxis.

respondido 29 mar '13, 14:03

Está utilizando tryparse (devuelve bool, nunca lanza) y luego detecta una excepción. id = -2 nunca sucederá. - Casper León Nielsen

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.