none
Problemas con Propiedades

    Question

  • Hola,

     

    Tengo un pequeño problema, creo una propiedad y necesito utilizar ese valor para tomar determinadas acciones, pero al recuperar el valor me aparece con valor nothing, en el evento load le asigno un valor, pero al hacer click en un boton me aparece la cadena vacia (Algunos controles hacen postback)

    el codigo es algo asi:

    Private Property IdEstado() As String

    Get

    Return _IdPublicidad

    End Get

    Set(ByVal value As String)

    _IdPublicidad = value

    End Set

    End Property

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

    Me.IdEstado = "Prueba"

    End Sub

    Protected Sub btnAceptar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAceptar.Click

    lblMensaje.Text = Me.IdEstado --> el valor es nothing

    End Sub

     

    Friday, January 12, 2007 2:43 PM

Answers

  •  

    Hola,

    Ese es un problema de que no controlas el viewstate

    Hazlo asi:

       Property IdEstado() As String
            Get
                If EnableViewState = True Then
                    _IdPublicidad = CType(ViewState("_IdPublicidad"), String)
                End If
                Return _IdPublicidad 
            End Get
            Set(ByVal value As String)
                If EnableViewState = True Then
                    ViewState("_IdPublicidad") = value
                End If
                _IdPublicidad = value
            End Set
        End Property

    Espero que te sirva

    Saludos.

    Friday, January 12, 2007 3:56 PM
    Moderator

All replies

  •  

    Hola,

    Ese es un problema de que no controlas el viewstate

    Hazlo asi:

       Property IdEstado() As String
            Get
                If EnableViewState = True Then
                    _IdPublicidad = CType(ViewState("_IdPublicidad"), String)
                End If
                Return _IdPublicidad 
            End Get
            Set(ByVal value As String)
                If EnableViewState = True Then
                    ViewState("_IdPublicidad") = value
                End If
                _IdPublicidad = value
            End Set
        End Property

    Espero que te sirva

    Saludos.

    Friday, January 12, 2007 3:56 PM
    Moderator
  • Javier,

    Muchas Gracias!!

    Friday, January 12, 2007 4:04 PM
  • Quizás esto te puede servir.


    Lo primero que debemos saber es que para utilizar la propiedad ViewState, es que la página Web ASP.NET debe tener un elemento de formulario de servidor, ósea un Form:
    <form id="form1" runat="server">
       ...
    </form>

    El ViewState proporciona información de estado para una página específica ASP.NET. Si se necesita utilizar esa información en más de una página o si se desea que la información permanezca para todas las visitas al sitio Web, se debe utilizar otro método para mantener el estado, como por ejemplo, estado de aplicación, estado de sesión o personalización.

    Este ejemplo lo saque de http://turboprogramacion.blogspot.com/2010/02/como-usar-viewstate-en-aspnet-con-c.html
    Revisa la pagina. Hay mucha información de como usar el ViewState.

     




    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    using System.Collections;   //para el ArrayList

    public partial class _Default : System.Web.UI.Page
    {
        private ArrayList ArregloDeValores;
        private int UltimoValor;

        //protected override PageStatePersister PageStatePersister
        //{
        //    get
        //    {
        //        return new SessionPageStatePersister(this);
        //    }
        //}

        protected void Page_Load(object sender, EventArgs e)
        {
            //Si se intenta obtener un valor que no existe en el ViewState, no se iniciará ninguna excepción,         //por lo tanto es mejor asegurarse de que el valor existe, por lo tanto es recomendable primero
            //comprobar la existencia del objeto
            if (ViewState["ARREGLO"] != null)
            {   //  rescato los ultimos valores guardados en ViewState
                ArregloDeValores = (ArrayList)ViewState["ARREGLO"];
                UltimoValor = Convert.ToInt32(ViewState["ULTIMO"]);
               
                for (int i = 0; i < 100; i++)
                {
                    ArregloDeValores[i] = UltimoValor + i;
                }

                ViewState.Add("ARREGLO", ArregloDeValores); //  Guardo el arreglo en ViewState
                //ViewState["ARREGLO"] = ArregloDeValores;  //  También puedo guardar el arreglo así
               
                GridView1.DataSource = ArregloDeValores;
                GridView1.DataBind();
            }
            else
            {
                UltimoValor = 100;
                ArregloDeValores = NuevoArreglo(UltimoValor);   //  La primera vez crea el arreglo
                ViewState.Add("ARREGLO", ArregloDeValores);     //  Guardo el arreglo en ViewState
                GridView1.DataSource = ArregloDeValores;
                GridView1.DataBind();
            }
        }

        protected void Page_PreRenderComplete(object sender, EventArgs e)
        {
            //Se pueden realizar cambios en el ViewState hasta el evento PreRenderComplete.
            //Después del evento cuando la página se represente en el explorador, no se guardarán los
            //cambios realizados en el ViewState.
           
            //ViewState.Add("ULTIMO", Convert.ToInt32(ViewState["ULTIMO"]) + 100);Puedo asignar de ambas formas
            ViewState["ULTIMO"] = Convert.ToInt32(ViewState["ULTIMO"]) + 100;
        }

        private ArrayList NuevoArreglo(int Ultimo)
        {
            ArrayList miArreglo = new ArrayList(100);
            for (int i = 0; i < Ultimo; i++)
            {
                miArreglo.Add(i);
            }
            return miArreglo;
        }
    }
    Saludos
    Saturday, February 20, 2010 4:16 AM