Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使对象在整个页面中可见?_C#_Asp.net - Fatal编程技术网

C# 如何使对象在整个页面中可见?

C# 如何使对象在整个页面中可见?,c#,asp.net,C#,Asp.net,我需要一个关于这个基本主题的手,因为我对网页很陌生 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { UserLogin ObjUser = new UserLogin(); Persona ObjPersona = new Persona(); DataSet ds = new Data

我需要一个关于这个基本主题的手,因为我对网页很陌生

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);
        }
    }
页面加载后的简单执行。存储过程填充一个数据集,然后我使用该数据集将数据放入对象中,在本例中为ObjPersona

现在,当我打算在另一个调用中使用ObjPersona时,让我们假设一下

protected void BtnClose_Click(object sender, EventArgs e)
    {            
        ObjUser.UpdateRegister(ObjPersona);
        LblClose.Text = "Sesión Cerrada";
    }
它不起作用,因为里面没有数据。(当我想使用对象内的数据时,点击错误)

我想调用一次获取用户数据的过程(在本例中是页面加载),然后从中使用它。如何访问在另一个控件中调用的数据


谢谢。

将为每个请求创建一个新的asp.net页面对象实例。每次回发到页面时,都会调用
Init
Load
,EventHandler。您不是在处理同一个对象

如果您在上一次请求期间填充了成员变量,则这次该变量将不可用

您需要使用一些方法跨回发持久化数据

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


如果该
数据集中有大量数据
,请避免将其放入
视图状态
。这将创建一个大的视图状态,并使页面加载变慢。

非常感谢,数据集中保存的数据并没有那么多。将花一些时间阅读有关Session和ViewState的信息,以确定哪个更适合此项目。