如何在整个页面中显示对象?

时间:2012-08-06 19:51:06

标签: c# asp.net

我需要掌握这个基本主题,因为我对网页很新。

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            UserLogin ObjUser = new UserLogin();
            Persona ObjPersona = new Persona();
            DataSet ds = new DataSet();
            string UserName = null;
            UserName = WindowsIdentity.GetCurrent().Name;
            UserName = Regex.Replace(UserName, ".*\\\\(.*)", "$1", RegexOptions.None);                
            ds = ObjUser.GetUserData(UserName);
            ObjPersona.UserName = UserName;
            ObjPersona.RealName = ds.Tables[0].Rows[0][0].ToString();
            ObjPersona.Ranking = ds.Tables[0].Rows[0][1].ToString();
            if (((bool)ds.Tables[0].Rows[0]["TNT"] == false)) ObjPersona.TNT = false;
            else ObjPersona.TNT = true;
            if (((bool)ds.Tables[0].Rows[0]["TLG"] == false)) ObjPersona.TLG = false;
            else ObjPersona.TLG = true;
            if (((bool)ds.Tables[0].Rows[0]["NEG"] == false)) ObjPersona.Negocios = false;
            else ObjPersona.Negocios = true;
            if (((bool)ds.Tables[0].Rows[0]["RES"] == false)) ObjPersona.Residenciales = false;
            else ObjPersona.Residenciales = true;
            if (((bool)ds.Tables[0].Rows[0]["BO"] == false)) ObjPersona.BO = false;
            else ObjPersona.BO = true;
            if (((bool)ds.Tables[0].Rows[0]["BOA"] == false)) ObjPersona.BOA = false;
            else ObjPersona.BOA = true;
            ObjUser.CreateRegister(ObjPersona);
        }
    }

加载页面后执行简单操作。存储过程填充DataSet,然后我使用数据集将数据放入Object中,在本例中为 ObjPersona

现在,当我打算在另一个电话中使用ObjPersona时,让我们说吧。

protected void BtnClose_Click(object sender, EventArgs e)
    {            
        ObjUser.UpdateRegister(ObjPersona);
        LblClose.Text = "Sesión Cerrada";
    }

由于那里没有数据,因此无法工作。 (一旦我想使用对象内的数据,就会出现错误)

我想调用获取用户数据的过程一次(这种情况是page_load),然后从那里开始工作。如何访问另一个控件中调用的数据?

感谢。

1 个答案:

答案 0 :(得分:3)

为每个请求创建一个新的asp.net Page对象实例。每次回发到页面时,都会调用InitLoad,eventhandler。你没有处理同一个对象。

如果您在上次请求期间填充了成员变量,则此次将无法使用该成员变量。

您需要使用一些方法在Postbacks中保留数据。

Asp.net提供了两种内置方法来完成此任务。一个是ViewState,另一个是Session。会话变量存储在服务器上,ViewState数据存储在表单中的隐藏输入变量中。

如果您在DataSet中有大量数据,请避免将其放入ViewState。它会创建一个大的ViewState并使你的页面加载缓慢。