如何存储post变量,以便在ASP.NET中随时调用该变量

本文关键字:变量 NET ASP 调用 何存储 存储 post | 更新日期: 2023-09-27 17:59:24

我正在为我的最后一个项目开发一个网站,我是ASP.NET和这个论坛的新手。感谢所有帮助我的人。

问题是。。。例如,我有2页。

page1.aspx.cs(此页面用于通过网络模块从mikrokontroller接收变量)示例mikrokontroller发送变量"status"=1

    protected void Page_Load(object sender, EventArgs e)
    {
        NameValueCollection POST = Request.Form;
        int STATUS;
        int responcode;
        try
        {
            A = int.Parse(POST["status"]);
        }
        catch (Exception)
        {
            status = 0;            
        }
        if (A == 1)
        {
            responcode = 200;   
            //when A = 1, i want to store A value to (buffer on something <-- this what i want to ask)).
            so i can call the value anytime in page2.               
        }
        else                
        {
            responcode = 400;              
        }
        Response.StatusCode = responcode;
    }
}

}

page2.aspx(第2页有按钮和文本框)

protected void Button3_Click(object sender, EventArgs e)
    {
      /*when this button click,
     i want to show A value from page1
      */
    }

如何存储post变量,以便在ASP.NET中随时调用该变量

您有很多选项来存储变量值:

  1. 会话状态:会话["status"]=A
  2. 应用程序状态:应用程序["status"]=A
  3. asp网络缓存:使用cache.Add()
  4. 数据库:在这里我还会存储时间戳,以跟踪控制器的历史状态
  5. 本地XML文件

这一切都取决于存储数据的范围:会话数据是当前用户/会话的本地数据,将在预定义的超时(def:20mins)后过期,应用程序对所有用户/会话都是全局的,并且将在您重新启动应用程序时过期(通过iis、iisreset、重新编译…),缓存是全局的并且将根据调用参数过期,数据库和xml是全局的,将保持状态。

在你的情况下,我会使用数据库或应用程序存储,因为微控制器和用户生活在不同的会话中,应用程序缓存不是一种合适的消息传递机制,而Xml自己也会引入一些问题(例如:文件系统权限、数据复制…)。

写入:

Application["status"] = A;

读取:

int A = 0;
bool result = int.TryParse(Application["status"],out A);

BTW:要解析整数,可以跳过try/catch部分:

int A = 0;
bool result = int.TryParse(POST["status"],out A);

在这种情况下,如果无法解析,则A将等于0;

您可以使用会话

    NameValueCollection POST = Request.Form;
    int STATUS;
    int responcode;
    try
    {
        A = int.Parse(POST["status"]);
    }
    catch (Exception)
    {
        status = 0;
    }

    if (A == 1)
    {
        responcode = 200;   
        //when A = 1, i want to store A value to (buffer on something <-- this what i want to ask)).
        Session["Avalie"] = A;
        so i can call the value anytime in page2.

    }
    else
    {
        responcode = 400;              
    }
    Response.StatusCode = responcode;
}

}

然后在第2页

protected void Button3_Click(object sender, EventArgs e)
{
  /*when this button click,
 i want to show A value from page1
  */
 if(!String.IsNullOrEmpty( Session["Avalie"] ))
 int Aval = int.Parse(Session["Avalie"]);
}

使用跨页面回发将值从一个页面传递到另一个页面(在asp.net 2.0中引入)

一个选项是将值分配给第一页中的静态变量
参考静态类和静态类成员(C#编程指南)

另一种选择是将状态变量用作会话状态变量或应用程序变量
请参阅ASP.NET会话状态概述和ASP.NET应用程序状态概述