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

时间:2011-06-18 14:44:53

标签: c# asp.net variables store

我正在为我的最终项目开发一个网络,并且是ASP.NET和这个论坛的新手。 对所有帮助我的人都有帮助。

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

page1.aspx.cs(此页面通过网络模块从mikrokontroler接收变量) 示例mikrokontroler发送变量“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
      */
    }

4 个答案:

答案 0 :(得分:1)

您可以使用会话

    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"]);

}

答案 1 :(得分:1)

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

  1. 会话状态:会话[“状态”] = A
  2. 申请状态:申请[“status”] = A
  3. asp net cache:使用Cache.Add()
  4. 数据库:这里我还会存储时间戳,以跟踪控制器的历史状态。
  5. 本地XML文件。
  6. 这一切都取决于存储数据的范围:会话数据是当前用户/会话的本地数据,并将在预定义的超时(def:20分钟)后过期,应用程序将对您的所有用户/会话全局,并将过期当你重新启动应用程序时(通过iis,iisreset,重新编译......),缓存是全局的,并且将根据调用的参数到期,数据库和xml是全局的并且将保持状态。

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

    写:

    Application["status"] = A;
    

    读:

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

    顺便说一句:要解析整数,你可以跳过try / catch部分:

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

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

答案 2 :(得分:0)

一个选项是将值分配给第一页中的静态变量 请参阅Static Classes and Static Class Members (C# Programming Guide)

另一个选择是使用状态变量作为会话状态变量或应用程序变量 请参阅ASP.NET Session State OverviewASP.NET Application State Overview

答案 3 :(得分:0)

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