【问题标题】:how to store post variable so i can call the variable anytime in ASP.NET如何存储后变量,以便我可以随时在 ASP.NET 中调用该变量
【发布时间】:2011-09-17 19:31:14
【问题描述】:

我正在为我的最终项目开发一个网站,而且我是 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
      */
    }

【问题讨论】:

  • 你可以使用会话或查询字符串。你试过这些蚂蚁吗??/

标签: c# asp.net variables store


【解决方案1】:

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

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

这完全取决于存储数据的范围:会话数据是当前用户/会话的本地数据,并且将在预定义的超时(定义: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】:

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

    另一种选择是将状态变量用作会话状态变量或应用程序变量。
    参考ASP.NET Session State OverviewASP.NET Application State Overview

    【讨论】:

      【解决方案3】:

      你可以使用会话

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-21
          • 2023-02-06
          • 1970-01-01
          • 2012-04-04
          • 1970-01-01
          相关资源
          最近更新 更多